ASP.NET MVC3 Webサイト用のカスタムHTTPモジュールがあり、web.configからロードしています。
<system.web>
<httpModules>
<add name="MyModule" type="MySolution.Web.MyHttpModule, MySolution.Web" />
</httpModules>
</system.web>
VS Webサーバー内からサイトを実行すると、モジュールは正しく読み込まれます(Initメソッドのブレークポイントがヒットします)が、IISでホストすると、無視されるようです(ブレークポイントが欠落しており、モジュールの機能がサイトにないため、2つの別々のIIS=ボックスで同様の結果が得られました。
何が悪いのですか?サイトのweb.configからモジュールを読み込むためにenable IIS=でフリックする必要がある設定はありますか?
IIS7はweb.configに別のスキーマを使用しています。モジュールをロードする正しい場所は次のとおりです。
<system.webServer>
<modules>
<add name="MyModule" type="MySolution.Web.MyHttpModule, MySolution.Web" />
</modules>
</system.webServer>
7年後:IISバージョンに固有ではなく、アプリケーションプールモードに固有:クラシックと統合のどちらか。
<system.webServer><!--for integrated mode-->
<modules>
<add name="modulename" type="blabla.modulenamehere" />
</modules>
</system.webServer>
<system.web><!--for classic mode-->
<httpModules>
<add name="modulename" type="blabla.modulenamehere" />
</httpModules>
</system.web>
同様の問題があります。私の解決策は、最初にモジュールを削除してから、それをsystem.webServer名前空間に再度追加することでした。
<system.webServer>
<modules>
<remove name="MyModule"/>
<add name="MyModule" type="MySolution.Web.MyHttpModule, MySolution.Web" />
</modules>
</system.webServer>
これは、2つの異なるIISサーバーにデプロイするためです。1つはサーバー2003(iis 6)に、もう1つはサーバー2008(iis7 +)にデプロイします。名前空間。ここでは間違っている可能性があります...