MVC過濾器:過濾器執行順序

若是某個Action過濾器運用了多種過濾器,那麼過濾器的執行順序是如何呢?blog

規則一:不一樣類型的過濾器有一個前後順序

 

即執行順序是:受權過濾器->動做過濾器->結果過濾器->異常過濾器。接口

注意:若是ActionFilter過濾器執行過程當中發生了異常,那麼會執行ExceptionFilter過濾器,不會執行ResultFilter過濾器。上圖所示的是正常狀況下的執行順序。io

規則二:控制器上面的過濾器優先於方法上面的過濾器

即控制器和方法上面都使用了相同的過濾器,那麼先執行控制器上面的過濾器。以下圖所示:方法

規則3、Order屬性能夠決定過濾器的前後順序

默認order=-1,即會先執行沒有設置order的過濾器。以下圖所示:im

規則4、若是過濾器的類型相同,相同order的過濾器不能肯定誰先執行

以下圖所示:異常

規則5、控制器實現的過濾器接口方法優先執行

上圖中實現了ActionFilter過濾器的OnActionExecuting方法,因此先執行這個方法在執行ActionFilter1。以下圖所示:db

相關文章
相關標籤/搜索