【问题标题】:Asp.Net Core Web app: Global exception handling using IExceptionFilter vs custom middlewareAsp.Net Core Web 应用程序:使用 IExceptionFilter 与自定义中间件进行全局异常处理
【发布时间】:2018-06-07 11:38:31
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

ASP.NET Core docs 解释了这两种方法之间的主要区别。它指出异常过滤器:

  • 处理 Razor 页面或控制器创建、model binding、操作过滤器或操作方法中发生的未处理异常。
  • 不要捕获资源过滤器、结果过滤器或 MVC 结果执行中发生的异常。

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

异常过滤器:

  • 适用于捕获动作中发生的异常。
  • 不如错误处理中间件灵活。

首选中间件进行异常处理。仅当错误处理因调用的操作方法而不同时才使用异常过滤器。例如,一个应用程序可能具有 API 端点和视图/HTML 的操作方法。 API 端点可以以 JSON 形式返回错误信息,而基于视图的操作可以以 HTML 形式返回错误页面。

【讨论】:

    猜你喜欢
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2023-02-10
    • 2014-11-10
    • 2021-10-14
    • 1970-01-01
    相关资源
    最近更新 更多