WebAPI AuthorizeAttribute with Protobuf returns 500
WebAPI AuthorizeAttribute with Protobuf returns 500
我有一个问题困扰了我一段时间。我已经尽力减少了。
我有一个标准的 System.Web.Http.ApiController
和一个简单的 returns Ok();
的 Get 方法
控制器标有[WindowsAuthorize]
,是自己创建的自定义属性。目前,此属性已缩减为:
public class WindowsAuthorizeAttribute : AuthorizeAttribute
{
protected override bool IsAuthorized(HttpActionContext actionContext)
{
return false;
}
}
现在,使用 Postman,当我使用以下 header 向我的端点发出 GET
请求时,我得到:
Accept: application/json
//Status: 401, Body: { "Message": "Authorization has been denied for this request."}
同样的请求,但是使用了 protobuf header:
现在,使用 Postman,当我使用以下 header 向我的端点发出 GET
请求时,我得到:
Accept: application/x-protobuf
//Status: 500, Body: (empty)
不知何故,401
变成了 500 Internal Server Error
,但服务器端没有异常。我在这里做错了什么,或者我该如何调试?
如果我错了请纠正我,但正确的行为是 return 401
,那么客户端应该在启用 NTLM 身份验证的情况下重试,对吗? (假设评论了完整的代码)
问题是无论何时发送正文 - 在本例中 { "Message": "Authorization has been denied for this request."}
,它也需要是 protobuf 可序列化的。
我有一个问题困扰了我一段时间。我已经尽力减少了。
我有一个标准的 System.Web.Http.ApiController
和一个简单的 returns Ok();
控制器标有[WindowsAuthorize]
,是自己创建的自定义属性。目前,此属性已缩减为:
public class WindowsAuthorizeAttribute : AuthorizeAttribute
{
protected override bool IsAuthorized(HttpActionContext actionContext)
{
return false;
}
}
现在,使用 Postman,当我使用以下 header 向我的端点发出 GET
请求时,我得到:
Accept: application/json
//Status: 401, Body: { "Message": "Authorization has been denied for this request."}
同样的请求,但是使用了 protobuf header:
现在,使用 Postman,当我使用以下 header 向我的端点发出 GET
请求时,我得到:
Accept: application/x-protobuf
//Status: 500, Body: (empty)
不知何故,401
变成了 500 Internal Server Error
,但服务器端没有异常。我在这里做错了什么,或者我该如何调试?
如果我错了请纠正我,但正确的行为是 return 401
,那么客户端应该在启用 NTLM 身份验证的情况下重试,对吗? (假设评论了完整的代码)
问题是无论何时发送正文 - 在本例中 { "Message": "Authorization has been denied for this request."}
,它也需要是 protobuf 可序列化的。