2009-06-08 5 views
18

Sto usando un HttpModule per fare un po 'di abbreviazione URL sul mio sito. Sto usando Visual Studio 2008 e IIS 7 e .Net 3.5.HttpModule non in esecuzione con Visual Studio

Quando il modulo è specificato nell'elemento system.webServer di web.config e il sito viene eseguito in IIS, funziona correttamente. La configurazione è la seguente:

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

Il mio modulo si collega all'evento BeginRequest, tutto funziona. Tuttavia, non riesco a farlo funzionare utilizzando il web server VS incorporato (Cassini). Ho provato a spostare la configurazione del modulo sull'elemento system.web in web.config, non è un caso. Ho messo un punto di interruzione su di esso, non succede niente.

Qualche idea sul motivo per cui questo sarebbe un problema?

(ho anche provato l'evento Application_BeginRequest in Global.asax. Ancora nessuna fortuna, anche se io preferisco tenere tutto in web.config in ogni caso.)

risposta

0

Hai provato anche mettere la dichiarazione del modulo nell'elemento ? Quando si esegue in dev usando Cassini, di solito è il posto in cui devo mettere i moduli per farli funzionare.

+0

Potresti espanderti ulteriormente? Non sono sicuro di cosa intendi. –

37

Cassini, il server di sviluppo web fornito con IIS utilizza la sintassi del modulo IIS6, quindi è necessario duplicare il modulo di aggiungere in questo modo

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

Nota che ho anche aggiunto un requisito indispensabile per le impostazioni IIS7

+0

questo sembra promettente, torneremo presto con i risultati ... –

+0

provato questo. Il mio modulo .ctors e Init() s ma qualsiasi tentativo di collegare gestori di eventi è incontrato con PlatformNotSupportedException - Cassini sembra ignorare completamente la sezione IIS7. – Hafthor

+1

Beh sì, Cassini fa - devi aggiungere anche la sintassi IIS6, quindi avere entrambi lì – blowdart

2

Se si esegue su IIS 7, mettere il modulo in:

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

Se si esegue su Cassini (web-server integrato in miniatura di Visual Studio), mettere il modulo in:

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

IIS si bloccherà se gli si assegnerà la posizione di Cassini.
Cassini si arresta in modo anomalo se gli si assegna la posizione IIS.

Ogni volta che utilizzo, devo essere sicuro di non distribuire web.config. includo anche le note in web.config: mano sinistra

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

di IIS non sa quello che sta facendo la mano destra di Cassini - ed entrambi avvitato in su.