MVCでは、次のようなさまざまなフィルターでアクションメソッドを装飾できます。
[HttpPost]
[Authorize]
public ActionResult mymethod(){}
HttpPost
は(おそらく間接的に)MethodSelectorAttribute
から派生し、Authorize
属性はActionFilterAttribute
を継承します。
私の質問は、MVCリクエストパイプラインでどの順序で実行されるのかということです。 MVCソースコードを検索しようとしましたが、関連するコードビットが見つかりませんでした。
フィルタは次の順序で実行されます。
たとえば、許可フィルターが最初に実行され、例外フィルターが最後に実行されます。各フィルタータイプ内で、Order値は実行順序を指定します。各フィルターの種類と順序内で、Scope列挙値はフィルターの順序を指定します。この列挙は、次のフィルタースコープ値を(実行する順序で)定義します。
[〜#〜] msdn [〜#〜] から抽出
時間を節約するために、これが順序の設定方法です。
[MyCustomContextFilter(Order=1)]
インデックスは0ベースなので、0、1、2などを実行できます。
フィルタが基本クラスにあるからといって、MVCに最初に適用するように指示しないことに注意してください:(。