我有一个困扰我一段时间的问题。我设法尽可能地减少了。
我有一个带有Get方法的标准System.Web.Http.ApiController
,只返回Ok();
控制器标有[WindowsAuthorize]
,这是自己创建的自定义属性。目前,此属性已减少为:
public class WindowsAuthorizeAttribute : AuthorizeAttribute
{
protected override bool IsAuthorized(HttpActionContext actionContext)
{
return false;
}
}
现在,使用Postman,当我使用以下标题向我的端点发出GET
请求时,我得到:
Accept: application/json
//Status: 401, Body: { "Message": "Authorization has been denied for this request."}
相同的请求,但使用protobuf标头:
现在,使用Postman,当我使用以下标题向我的端点发出GET
请求时,我得到:
Accept: application/x-protobuf
//Status: 500, Body: (empty)
不知何故,401
变为500 Internal Server Error
,但我没有得到服务器端的例外。我在这里做了一些明显错误的事情,或者我该如何调试呢?
如果我错了,请纠正我,但正确的行为是返回401
,然后客户端应该再次尝试启用NTLM身份验证,对吧? (假设回复了完整的代码)
答案 0 :(得分:1)
问题是每当发送一个正文时 - 在这种情况下{ "Message": "Authorization has been denied for this request."}
,它也需要是protobuf序列化的。