从 Asp.Net MVC 6 API 返回 JSON 错误
Returning JSON Errors from Asp.Net MVC 6 API
我正在尝试使用 MVC 6 构建网络 API。但是当我的控制器方法之一抛出错误时,响应的内容是一个格式非常好的 HTML 页面如果这是一个 MVC 应用程序,将会提供很多信息。但由于这是一个 API,我宁愿返回一些 JSON。
注意:我现在的设置非常基本,只需设置:
app.UseStaticFiles();
app.UseIdentity();
// Add MVC to the request pipeline.
app.UseMvc();
我想通用设置。有没有一种 "right/best" 方法可以在 MVC 6 中为 API 设置它?
谢谢...
实现场景的一种方法是编写 ExceptionFilter
并在其中捕获必要的详细信息并将 Result
设置为 JsonResult
。
// Here I am creating an attribute so that you can use it on specific controllers/actions if you want to.
public class CustomExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(ExceptionContext context)
{
var exception = context.Exception;
context.Result = new JsonResult(/*Your POCO type having necessary details*/)
{
StatusCode = (int)HttpStatusCode.InternalServerError
};
}
}
您可以添加此异常过滤器以适用于所有控制器。
示例:
app.UseServices(services =>
{
services.AddMvc();
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new CustomExceptionFilterAttribute());
});
.....
}
请注意,此解决方案并未涵盖所有场景...例如,在格式化程序写入响应时抛出异常时。
我正在尝试使用 MVC 6 构建网络 API。但是当我的控制器方法之一抛出错误时,响应的内容是一个格式非常好的 HTML 页面如果这是一个 MVC 应用程序,将会提供很多信息。但由于这是一个 API,我宁愿返回一些 JSON。
注意:我现在的设置非常基本,只需设置:
app.UseStaticFiles();
app.UseIdentity();
// Add MVC to the request pipeline.
app.UseMvc();
我想通用设置。有没有一种 "right/best" 方法可以在 MVC 6 中为 API 设置它?
谢谢...
实现场景的一种方法是编写 ExceptionFilter
并在其中捕获必要的详细信息并将 Result
设置为 JsonResult
。
// Here I am creating an attribute so that you can use it on specific controllers/actions if you want to.
public class CustomExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(ExceptionContext context)
{
var exception = context.Exception;
context.Result = new JsonResult(/*Your POCO type having necessary details*/)
{
StatusCode = (int)HttpStatusCode.InternalServerError
};
}
}
您可以添加此异常过滤器以适用于所有控制器。 示例:
app.UseServices(services =>
{
services.AddMvc();
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new CustomExceptionFilterAttribute());
});
.....
}
请注意,此解决方案并未涵盖所有场景...例如,在格式化程序写入响应时抛出异常时。