项目负责人希望我为Web API创建一个自定义异常过滤器,以捕获所有未处理的异常。我在我们的WebApiConfig文件中添加了一个自定义过滤器,它正在工作,但它没有提供他想要的所有细节。他希望在正文中返回500错误信息:
{
"code": 500,
"message": "My custom message"
}
下面显示的处理程序代码返回500错误,但正文仅显示
{
"message": "My custom message"
}
如何自定义此选项以添加“代码”编号,即使该信息是多余的?
public class UnhandledExceptionAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
string message = "My custom message";
context.Response = context.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, message);
}
}
答案 0 :(得分:1)
只需使用CreateResponse<T>
扩展程序:
public class UnhandledExceptionAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
string message = "My custom message";
context.Response = context.Request.CreateResponse(
HttpStatusCode.InternalServerError,
new {
code = 500,
message = message
});
}
}