2009-06-08 23 views
18

Sitemde URL kısaltması yapmak için bir HttpModule kullanıyorum. Visual Studio 2008 ve IIS 7 ve .Net 3.5 kullanıyorum.HttpModule Visual Studio ile çalışmıyor

Modül, web.config öğesinin sistem.webServer öğesinde belirtildiğinde ve site IIS'de çalıştırıldığında, düzgün çalışır. Yapılandırma şöyle:

Modülüm BeginRequest olayına bağlanır, her şey çalışır. Ancak, yerleşik VS web sunucusunu (Cassini) kullanarak çalıştırmak için alamıyorum. Modül yapılandırmasını web.config dosyasında sistem.web öğeye taşımayı denedim, şans yok. Üzerinde bir kırılma noktası koyuyorum, hiçbir şey olmuyor.

Bunun neden sorun olacağı konusunda bir fikrin var mı?

(Ben de Global.asax içinde Application_BeginRequest olayı çalıştı. Yine hiç şans, ben yine web.config şeyi kalmasını tercih ederim gerçi.)

cevap

0

ayrıca elemanı modül beyanı koymayı deneyin mü ? Devrede Cassini kullanarak çalışırken, genellikle onları çalıştırmak için modülleri koymak zorundayım. Eğer ben de IIS7 ayarlarına bir ön şartı ekledik böylece

<system.web> 
    <httpModules> 
    <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" /> 
    </httpModules> 
</system.web> 


<system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules> 
    <remove name="MinimizeModule" /> 
    <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" 
     preCondition="managedHandler" /> 
    </modules> 
</system.webServer> 

Not gibi eklemek modülünü çoğaltmak gerekir böylece

+0

Daha da genişletebilir misiniz? Ne anlatmak istediğinden emin değilim. –

37

Cassini, IIS ile sağlanan gelişme web sunucusu, IIS6 modülü sözdizimi kullanır

<configuration> 
    <system.webServer> 
     <modules> 
     <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" /> 
     </modules> 
    </system.webServer> 
</configuration> 

Eğer Cassini (Visual Studio'nun, entegre minyatür web sunucu) üzerinde çalıştırıyorsanız, koyun:

+0

Bu umut verici görünüyor, sonuçları ile yakında size geri dönecek ... –

+0

bunu denedi. Modül .törlerim ve Init() lerim ama olay işleyicileri ekleme girişimi PlatformNotSupportedException ile karşılandı - Cassini, IIS7 bölümünü tamamen yok sayıyor gibi görünüyor. – Hafthor

+1

Evet, Cassini yapar - IIS6 sözdizimini de eklemeniz gerekir, bu nedenle her ikisine de sahip olmanız gerekir – blowdart

2

IIS 7 üzerinde çalıştırıyorsanız, modülü koymak Modül:

<configuration> 
    <system.web> 
     <httpModules> 
      <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" /> 
    </system.web> 
</configuration> 

Eğer Cassini konumunu verirseniz IIS çökecektir.
IIS konumunu verirseniz Cassini çökecektir.

Her dağıttığımda, web.config'u dağıtmamaya dikkat etmeliyim.

<system.web> 
    <!--The Cassini location to add modules (comment out for IIS)--> 
    <httpModules> 
     <!--WARNING: IIS will crash if you leave this in here. 
      IISBUG: IIS doesn't support system.web/httpModules, 
      and Cassini doesn't support system.webServer/modules 
     --> 
     <!--Comment out for IIS--> 
     <add name="PerformanceHttpModule" type="DummyPlaceholder.PerformanceHttpModule"/> 
    </httpModules> 
</system.web> 

<system.webServer> 
    <!--The IIS7 location to add modules (comment out for Cassini) 
    <modules runAllManagedModulesForAllRequests="true"> 
     <!--IIS7 will crash if you present a system.web httpModules. --> 
     <remove name="PerformanceHttpModule" /> 
     <add name="PerformanceHttpModule" type="DummyPlaceholder.PerformanceHttpModule"/> 
    </modules> 
</system.webServer> 

IIS sol eli Cassini sağ ne yaptığını bilmiyor - ve her ikisi çuvallamıştın: ben de web.config notlar içermektedir.