我有一个带有 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(未授权)。
我只是想知道,这是否是预期的行为?如果有任何方法可以改变它。例如,如果我要上传一个大文件,在通知客户端无权这样做之前,所有数据都会被上传。不知何故,这对我来说没有意义?还是我错过了什么?