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 可序列化的。