Authorize タグでフラグが立てられた Web Api コントローラーを取得しました。 https://msdn.microsoft.com/de-de/library/system.web.http.authorizeattribute(v=vs.118).aspx
[Authorize()]
public class SomeController : ApiController {}
私は HttpWebRequest を使用して、次のようにそのコントローラーに Post-Request を実行しています: (問題を表示するために認証ヘッダーを提供していないことに注意してください)
var httpWebRequest = (HttpWebRequest)WebRequest.Create("SomeUrl");
httpWebRequest.ContentType = "text/json";
httpWebRequest.Method = "POST";
StreamWriter streamWriter;
// 1) no error here, works without authentication
using (streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = "{\"Message\":\"Test\"," + "\"Data\":\"\"}";
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
// 2) here I get a 401: not authorized
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
問題: リクエスト ストリームを要求すると、承認されていない例外が発生することが予想されました。しかし、問題なく GetRequestStream を呼び出して、そのストリームに書き込むことさえできます。GetRespone が呼び出されたときのみ、以前に予想した 401 (Not Authorized) が返されます。
これが意図した動作であるかどうかは疑問です。そして、それを変える方法があれば。たとえば、巨大なファイルをアップロードしたい場合、クライアントが許可されていないことを通知される前に、すべてのデータがアップロードされます。どういうわけかそれは私には意味がありませんか?それとも何かが恋しいですか?