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


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

規則一:不同類型的過濾器有一個先后順序

 

即執行順序是:授權過濾器->動作過濾器->結果過濾器->異常過濾器。

注意:如果ActionFilter過濾器執行過程中發生了異常,那么會執行ExceptionFilter過濾器,不會執行ResultFilter過濾器。上圖所示的是正常情況下的執行順序。

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

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

規則三、Order屬性可以決定過濾器的先后順序

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

規則四、如果過濾器的類型相同,相同order的過濾器不能確定誰先執行

如下圖所示:

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

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM