2012-01-12 14 views
2

私はサードパーティのカスタム認証HTTPモジュールを持っています。私はこのモジュールをコントローラの特定のアクションメソッドに設定したいと思います。これは可能ですか?ASP.NET MVC 3の特定のコントローラのカスタムHTTPモジュールを有効にする方法

フォルダレベルで適切なweb.configを設定することで、フォルダレベルで設定できることは分かっていますが、特定のコントローラの特定の動作方法を探しています。

答えて

4

特定のコントローラに対してHttpモジュールを有効にすることはできませんが、web.config内の特定の要求パスに対して有効にすることはできます。それが事実上効果的です。次のweb.configスニペットは、 "yourController"パスに一致するリクエストに対してのみ "ThirdParty.HttpModule"を有効にします。これは、MVC、WebForms、および汎用ハンドラでも機能するはずです。あなたはこのアプリケーションのサブディレクトリ内の他のアプリケーションがある場合、子アプリケーションは、デフォルトでこの設定を継承する、とあなたは、このモジュールは、子アプリケーションで作業したくない場合がありますので、

<location path="yourController" inheritInChildApplications="false"> 
    <system.web> 
    <httpModules> 
     <add name="yourModule" type="ThirdParty.HttpModule"/> 
    </httpModules> 
    </system.web> 
</location> 

inheritInChildApplications部分は、重要です。

さらに詳しい情報:MSDN

+0

VS開発サーバーはHTTPモジュールを使用しないことに注意してください。開発のためにIIS Expressに切り替える必要があります。 –

0

私はアクションフィルタを探していると思います。 Web上に多数のサンプルがあり、それらを設定する方法を示しています。

http://msdn.microsoft.com/en-us/library/dd381609%28v=VS.98%29.aspx

+1

アクションフィルタを探していません。私が質問したように、私は第三者が開発したカスタムHTTPモジュールを使用する必要があります。 –

+0

私はそれが可能であるとは思わない。アクションフィルタは、MVCで達成したいことを達成する唯一の方法です。 –

0

あなたはそのためのActionFiltersを使用する必要があります。 本当にHttpModuleを使用する場合、モジュールはURLに基​​づいてロジックを実行する必要があるかどうかをチェックする必要があります。 HttpModuleはコントローラについて何も知らないし、その逆もありません。

+1

私が言及したように、私はサードパーティのカスタムHTTPモジュールを使用する必要があります。私はそれをコントロールしていません。 –

+0

次に別の可能性は、特定のURLが要求された場合にのみ実行される別のHttpModuleにそれをラップすることです。 – Daniel

関連する問題