使用Protobuf的WebAPI AuthorizeAttribute返回500

时间:2015-09-23 07:27:59

标签: c# authorization asp.net-web-api protobuf-net

我有一个困扰我一段时间的问题。我设法尽可能地减少了。

我有一个带有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身份验证,对吧? (假设回复了完整的代码)

1 个答案:

答案 0 :(得分:1)

问题是每当发送一个正文时 - 在这种情况下{ "Message": "Authorization has been denied for this request."},它也需要是protobuf序列化的。