Asp.Net核心Web应用程序:使用IExceptionFilter与自定义中间件进行全局异常处理

时间:2017-12-26 17:28:18

标签: asp.net-core asp.net-core-mvc asp.net-core-webapi

Asp.Net Core支持两种方法为Web应用程序执行全局异常处理,实现IExceptionFilter或创建自定义中间件。一个优于另一个有什么优势吗?我看到的大多数参考文献都是用于创建自定义中间件。

1 个答案:

答案 0 :(得分:11)

ASP.NET核心docs解释了这两种方法之间的主要区别。在谈论"异常过滤器"具体来说,文档声明:

  

异常过滤器处理控制器创建,模型绑定,操作过滤器或操作方法中发生的未处理异常。他们不会捕获资源过滤器,结果过滤器或MVC结果执行中发生的异常。

甚至建议何时使用中间件以及何时使用"异常过滤器":

  

异常过滤器适用于捕获MVC操作中发生的异常,但它们不像错误处理中间件那样灵活。首选中间件用于一般情况,并仅在需要根据选择的MVC操作进行不同的错误处理时使用过滤器。例如,您的应用可能包含API端点和视图/ HTML的操作方法。 API端点可以将错误信息作为JSON返回,而基于视图的操作可以将错误页面作为HTML返回。