IIS tidak memuat modul HTTP khusus dari web.config

18

Saya memiliki modul HTTP khusus untuk situs web ASP.NET MVC3 yang saya muat dari web.config:

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

Modul ini dimuat dengan benar ketika saya menjalankan situs dari dalam server web VS (titik istirahat dalam metode Init saya terkena) tetapi ketika saya host di IIS tampaknya diabaikan (breakpoint tidak terjawab dan fungsionalitas modul tidak ada) dari situs). Saya sudah mencobanya di dua kotak IIS yang terpisah dengan hasil yang serupa.

Apa yang saya lakukan salah? Apakah ada pengaturan yang harus saya jentik agar IIS dapat memuat modul dari situs web.config?

Mike Chamberlain
sumber

Jawaban:

25

Saya menemukan ini tidak lama setelah saya mengajukan pertanyaan - IIS7 menggunakan skema yang berbeda untuk web.config. Tempat yang benar untuk memuat modul sekarang:

<system.webServer>
  <modules>
    <add name="MyModule" type="MySolution.Web.MyHttpModule, MySolution.Web" />
  </modules>
</system.webServer>
Mike Chamberlain
sumber
3
Saya mengalami masalah yang sama dan pos ini membantu saya memperbaikinya. Saya memang menemukan bahwa diperlukan untuk menjaga baik system.web / httpModules dan system.webServer / modules agar modul kustom saya berfungsi baik pada server dev lokal dan server produksi.
Ido Ran
WOW! Terima kasih. Aku benar-benar membenturkan kepalaku ke dinding yang satu ini.
Alex C
3
Mungkin perbedaannya bukan IIS6 vs IIS7 tetapi mode klasik vs terintegrasi.
Jan Zahradník
1

Saya memiliki masalah serupa. Solusi saya melibatkan menghapus Modul pertama dan kemudian menambahkannya kembali ke namespace system.webServer.

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

Ini mungkin karena kami menggunakan dua server IIS yang berbeda. satu di server 2003 (iis 6) dan satu di server 2008 (iis7 +). Jadi menambahkan modul ke tampaknya memblokirnya dari memuat di namespace. Saya bisa salah di sini ...

Dai Bok
sumber
1

7 tahun kemudian: Tidak spesifik untuk versi IIS, khusus untuk mode kumpulan aplikasi: klasik versus terintegrasi.

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