我们的问题如下:我们在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可序列化响应?
答案 0 :(得分:0)
通过在响应中返回我们的可序列化内容来解决:
protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized,
new ApiResponse(false, ApiErrorMessages.Unauthorized, ErrorType.Unauthorized));
}