web-dev-qa-db-ja.com

IISは、web.configからカスタムHTTPモジュールをロードしません

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=でフリックする必要がある設定はありますか?

19

IIS7はweb.configに別のスキーマを使用しています。モジュールをロードする正しい場所は次のとおりです。

<system.webServer>
  <modules>
    <add name="MyModule" type="MySolution.Web.MyHttpModule, MySolution.Web" />
  </modules>
</system.webServer>
25

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>
1
TamerDev

同様の問題があります。私の解決策は、最初にモジュールを削除してから、それを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 +)にデプロイします。名前空間。ここでは間違っている可能性があります...

1
Dai Bok