何时在 ASP.NET 核心 MVC 中使用 ResultFilter

When to use ResultFilter in ASP.NET core MVC

根据这个文档 https://docs.microsoft.com/en-ca/aspnet/core/mvc/controllers/filters#result-filters 结果过滤器将在操作过滤器之后执行。

我的问题:鉴于我不想处理异常,实现 ActionFilter 的 OnActionExecuted 和 ResultFilter 的 OnResultExecuting 之间有什么区别?似乎 ActionFilter 允许我处理异常并跳过 ExceptionFilter。

文档中的示例不清楚应该如何在操作过滤器或结果过滤器之间进行选择。

当结果过滤器比动作过滤器更可取时,您能举个例子吗?

Action filters 实现 IActionFilterIAsyncActionFilter 接口,它们的执行围绕着 action 方法的执行。动作过滤器包含在控制器动作执行之前和之后执行的逻辑。

结果过滤器 实现了 IResultFilterIAsyncResultFilter 接口,它们的执行围绕着操作结果的执行。结果过滤器包含在执行视图结果之前和之后执行的逻辑。

ActionFilter's OnActionExecuted and ResultFilter's OnResultExecuting

  • ActionFilter的OnActionExecuted:在action方法调用后立即调用。 (比如-在动作执行视图数据修改后做一些逻辑)

  • ResultFilter 的OnResultExecuting:在执行结果之前调用;这意味着在渲染视图之前。 (例如 - 在查看结果修改之前做一些逻辑。)