我正在尝试使用MVC 6构建一个Web API.但是当我的一个控制器方法抛出一个错误时,响应的内容是一个格式很好的
HTML页面,这是一个非常丰富的MVC应用程序.但是,由于这是一个API,我宁愿返回一些
JSON.
注意:我的设置现在超级基本,只需设置:
app.UseStaticFiles(); app.UseIdentity(); // Add MVC to the request pipeline. app.UseMvc();
我想要普遍设置这个.是否有一个“正确/最好”的方法来设置在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()); }); ..... }
请注意,此解决方案不涵盖所有方案…例如,当由格式化程序写入响应时抛出异常.
原文地址:https://www.jb51.cc/aspnet/246066.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。