IIS, web.config'den özel HTTP modülü yüklemez


18

Web.config'den yüklediğim bir ASP.NET MVC3 web sitesi için özel bir HTTP modülüm var:

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

Siteyi VS web sunucusundan çalıştırdığımda modül (Init yöntemimdeki kırılma noktası vuruldu) doğru yüklendi, ancak IIS'de barındırdığımda yok sayılıyor gibi görünüyor (kesme noktası kaçırıldı ve modülün işlevselliği yok siteden). Benzer bir sonuç ile iki ayrı IIS kutusunda denedim.

Neyi yanlış yapıyorum? IIS'nin bir sitenin web.config dosyasından modül yükleyebilmesini sağlamak için kaydırmam gereken bir ayar var mı?

Yanıtlar:


25

Soruyu sorduktan kısa bir süre sonra bunu anladım - IIS7 web.config için farklı bir şema kullanıyor. Bir modülü yüklemek için doğru yer şimdi:

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

3
Aynı sorunu yaşadım ve bu yazı düzeltmeme yardımcı oldu. Özel modülümün yerel dev sunucusunda ve üretim sunucusunda çalışmasını sağlamak için hem system.web / httpModules hem de system.webServer / modüllerini saklamanın gerekli olduğunu buldum.
Ido Ran

VAOV! teşekkür ederim. Bu konuda kafamı gerçekten duvara vuruyordum.
Alex C

3
Muhtemelen fark IIS6 vs IIS7 değil, klasik vs entegre moddur.
Jan Zahradník

1

Benzer bir sorunum var. Benim Çözümüm önce Modülün kaldırılmasını ve ardından system.webServer ad alanına yeniden eklenmesini içeriyordu.

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

Bunun nedeni iki farklı IIS sunucusuna konuşlandırmamız olabilir. biri sunucu 2003'te (iis 6) ve diğeri sunucu 2008'de (iis7 +). Yani modül eklemek ad alanında yüklenmesini engelliyor gibiydi. Burada yanılmış olabilirim ...


1

7 yıl sonra: IIS sürümüne özgü değil, uygulama havuzu moduna özel: klasik ile tümleşik.

  <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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.