asp.net mvc 选择器和过滤器之间的区别?

Difference between asp.net mvc Selector and Filter?

我对 asp.net mvc 选择器和过滤器感到困惑。

我们知道,过滤器有 5 种类型:身份验证、授权、操作、结果、异常。

然而,还有另一个'filter':动作选择器。

Base 类 也不同:ActionMethodSelectorAttribute 和 FilterAttribute

谁能告诉我选择器和普通过滤器有什么区别?

谢谢。

操作选择器简单地确定要执行的操作 运行(例如,通过用于请求的 HTTP 动词)。

过滤一些不同的目标 - 操作过滤器 运行 操作之前或之后的代码,异常过滤器 运行 异常代码,身份验证过滤器用于与身份验证相关的代码等。

今天我只是红了一个material来说明这个相关问题。

在mvc框架里面,是这样的:
----控制器工厂
----控制器选择并实例化(在依赖解析器的帮助下)
----调用controller.Execute(RequestContext)
--------ActionInvoker(默认:ControllerActionInvoker)
--------this.ActionInvoker.InvokeAction(ControllerContext, actionName)
--------------选择动作方式(涉及动作选择器)
----------身份验证和授权过滤器
----------模型绑定
--------------使用动作过滤器调用动作
----------身份验证挑战(IAuthenticationFilter)
----------用结果过滤器执行结果
----控制器配置

看,选择器和过滤器完全在不同的范围内,即使它们都在 actionInvoker 中使用。