ASP.NET MVC过滤器执行顺序介绍
时间:2022-06-28 09:18:01|栏目:.NET代码|点击: 次
如果某个Action过滤器运用了多种过滤器,那么过滤器的执行顺序是如何呢?
规则一:不同类型的过滤器有一个先后顺序
即执行顺序是:授权过滤器->动作过滤器->结果过滤器->异常过滤器
。
注意:如果ActionFilter过滤器执行过程中发生了异常,那么会执行ExceptionFilter过滤器,不会执行ResultFilter过滤器。上图所示的是正常情况下的执行顺序。
规则二:控制器上面的过滤器优先于方法上面的过滤器
即控制器和方法上面都使用了相同的过滤器,那么先执行控制器上面的过滤器。如下图所示:
规则三、Order属性可以决定过滤器的先后顺序
默认order=-1,即会先执行没有设置order的过滤器。如下图所示:
规则四、如果过滤器的类型相同,相同order的过滤器不能确定谁先执行
如下图所示:
规则五、控制器实现的过滤器接口方法优先执行
上图中实现了ActionFilter过滤器的OnActionExecuting方法,所以先执行这个方法在执行ActionFilter1。如下图所示: