web-dev-qa-db-ja.com

HttpModuleが.NET4.5で呼び出されない

この問題について矛盾するアドバイスをふるいにかけることに多くの時間を費やし、解決策を投稿しようと思いました。

私の環境は.NET4.5、Visual Studio 2012で、MVC4アプリケーションで動作しています。過去に行ったようにHttpモジュールを作成し、次のようにWeb.configに追加しました。

<configuration>
 <system.web>
  <httpModules>
   <add name="MyModule" type="Services.MyModule, Services" />
  </httpModules>
 </system.web>
</configuration>

ただし、アプリケーションがモジュールのInit()を呼び出すことはありませんでした。最終的に、モジュールは代わりに<system.webServer>内にあり、要素は<modules>ではなく<httpModules>という名前の要素を次のように配置する必要があるというアドバイスを見つけました。

<configuration>
 <system.webServer>
  <modules>
   <add name="MyModule" type="MyModule" type="Services.MyModule, Services" />
  </modules>
 </system.webServer>
</configuration>

アプリケーションを再実行すると、期待どおりにInit()が呼び出されました。 FWIW、方向のあるページはここにあります: http://msdn.Microsoft.com/en-us/library/ms227673.aspx

HTH

21
timprice

<system.web>はIIS 6以下(カッシーニを含む)用、<system.webServer>はIIS 7以上)用です。両方(念のため)次に、このノードを<system.webServer>に追加して、冗長性を妨げないようにします。

<validation validateIntegratedModeConfiguration="false" />
25
robrich