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


18

web.configから読み込むASP.NET MVC3 Webサイト用のカスタムHTTPモジュールがあります。

<system.web>
    <httpModules>
      <add name="MyModule" type="MySolution.Web.MyHttpModule, MySolution.Web" />
    </httpModules>
</system.web>

VS Webサーバー内からサイトを実行するとモジュールが正しく読み込まれます(Initメソッドのブレークポイントがヒットします)が、IISでホストすると無視されるようです(ブレークポイントが失われ、モジュールの機能がありません)サイトから)。私は2つの別々のIISボックスで同様の結果を試してみました。

何が間違っていますか?IISがサイトのweb.configからモジュールをロードできるようにするためにフリックする必要がある設定はありますか?

回答:


25

質問をしてすぐにこれを理解しました-IIS7はweb.configに異なるスキーマを使用します。モジュールをロードする正しい場所は次のとおりです。

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

3
この同じ問題にぶつかりました。この投稿は修正に役立ちます。カスタムモジュールをローカルの開発サーバーと運用サーバーの両方で動作させるには、system.web / httpModulesとsystem.webServer / modulesの両方を保持する必要があることがわかりました。
イドラン

うわー!ありがとうございました。私は本当にこれで壁に頭をぶつけていました。
アレックスC

3
おそらく、違いはIIS6とIIS7ではなく、クラシックモードと統合モードです。
JanZahradník16年

1

同様の問題があります。私のソリューションでは、最初にモジュールを削除してから、それを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

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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.