在asp.net mvc中以什么顺序执行filter
在MVC中,我们可以使用不同的filter来修饰操作方法
[HttpPost] [Authorize] public ActionResult mymethod(){}
HttpPost
派生自MethodSelectorAttribute
(可能间接), Authorize
派生自ActionFilterAttribute
。
我的问题是:他们在MVC请求pipe道中执行的顺序? 我试图去searchMVC源代码,但没有find相关的代码位。
filter按以下顺序运行:
- 授权filter
- 行动filter
- 响应filter
- 例外filter
例如,授权filter首先运行,exceptionfilter最后运行。 在每个filtertypes中,Order值指定运行顺序。 在每个filtertypes和顺序中,范围枚举值指定filter的顺序。 该枚举定义了以下filter作用域值(按它们的运行顺序):
- 第一
- 全球
- 调节器
- 行动
- 持续
从MSDN提取
为了节省你一些时间,这是你如何设置顺序:
[MyCustomContextFilter(Order=1)]
该索引是基于0,所以你可以做0,1,2等…
应该注意的是,只是因为在基类上的filter不告诉MVC先把它应用:(。