asp.net-core - 何时在 ASP.NET core MVC 中使用 ResultFilter

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

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

我的问题:如果我不想处理异常,那么实现 ActionFilter 的 OnActionExecuted 和 ResultFilter 的 OnResultExecuting 之间有什么区别?看来 ActionFilter 允许我处理异常并跳过 ExceptionFilter。

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

您能否举例说明什么情况下结果过滤器比操作过滤器更可取?

最佳答案

操作过滤器实现IActionFilterIAsyncActionFilter接口(interface),并且它们的执行围绕操作方法的执行。操作过滤器包含在 Controller 操作执行之前和之后执行的逻辑。

结果过滤器实现IResultFilterIAsyncResultFilter接口(interface),并且它们的执行围绕操作结果的执行。结果过滤器包含在执行 View 结果之前和之后执行的逻辑。

ActionFilter's OnActionExecuted and ResultFilter's OnResultExecuting

  • ActionFilter 的 OnActionExecuted:在调用操作方法后立即调用它。 (例如-在action执行 View 数据修改后做一些逻辑)

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

关于asp.net-core - 何时在 ASP.NET core MVC 中使用 ResultFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44848738/

相关文章:

cookies - 未在 iframe 中设置 Cookie

asp.net-core - .NET Core 2.1 MVC Identity Authorization - 不同部分的不同用户角色

asp.net-core - asp.net 核心 session 不是特定于用户的吗?

c# - 在.net core web API中自动添加策略属性

asp.net-mvc - 在.Net Core 2.2 Api中扩展IIS日志

c# - .net core 版本冲突

Asp.net MVC 核心错误请求 - 请求太长 HTTP 错误 400。请求 header 的大小太长

内容类型为 application/json 的 Angular 发布请求不起作用

c# - 如何从 EF7 DbContext 获取 ConnectionString

azure - .NET Core Web API 部署到 Azure 后无法工作