MVC过滤器:过滤器执行顺序

若是某个Action过滤器运用了多种过滤器,那么过滤器的执行顺序是如何呢?blog

规则一:不一样类型的过滤器有一个前后顺序

 

即执行顺序是:受权过滤器->动做过滤器->结果过滤器->异常过滤器。接口

注意:若是ActionFilter过滤器执行过程当中发生了异常,那么会执行ExceptionFilter过滤器,不会执行ResultFilter过滤器。上图所示的是正常状况下的执行顺序。io

规则二:控制器上面的过滤器优先于方法上面的过滤器

即控制器和方法上面都使用了相同的过滤器,那么先执行控制器上面的过滤器。以下图所示:方法

规则3、Order属性能够决定过滤器的前后顺序

默认order=-1,即会先执行没有设置order的过滤器。以下图所示:im

规则4、若是过滤器的类型相同,相同order的过滤器不能肯定谁先执行

以下图所示:异常

规则5、控制器实现的过滤器接口方法优先执行

上图中实现了ActionFilter过滤器的OnActionExecuting方法,因此先执行这个方法在执行ActionFilter1。以下图所示:db

相关文章
相关标签/搜索