Web API - ProtoBufFormatter - 返回带有自定义Authorize属性的serializable 401

时间:2017-09-12 15:20:07

标签: c# asp.net-web-api protocol-buffers protobuf-net authorize-attribute

我们的问题如下:我们在Web API中使用 ProtoBufFormatter

config.Formatters.Add(new ProtoBufFormatter());

还使用我们的自定义授权属性。问题是我们的Web API返回401.这导致Protobuf抛出和异常,因为它无法序列化响应,因此它抛出以下异常:

  

没有为类型定义序列化程序:System.Object

当我发表评论时:

protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
        {
            // base.HandleUnauthorizedRequest(actionContext);
        }

服务器停止抛出异常,因为这会阻止它发送401响应。

但我不确定如何处理这个问题。

我是否应该在我的控制器操作中返回包含该用户未授权的protobuf可序列化响应?

1 个答案:

答案 0 :(得分:0)

通过在响应中返回我们的可序列化内容来解决:

protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
        {
            actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized,
                new ApiResponse(false, ApiErrorMessages.Unauthorized, ErrorType.Unauthorized));
        }