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

问题描述 投票:4回答:1

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

asp.net-core asp.net-core-mvc asp.net-core-webapi
1个回答
11
投票

ASP.NET Core docs解释了这两种方法之间的主要区别。在具体讨论“异常过滤器”时,文档说明:

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

甚至有关何时使用中间件以及何时使用“异常过滤器”的建议:

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

© www.soinside.com 2019 - 2024. All rights reserved.