2009-06-08 24 views
18

Estoy usando un HttpModule para acortar algunos URL en mi sitio. Estoy usando Visual Studio 2008 e IIS 7, y .Net 3.5.HttpModule no se está ejecutando con Visual Studio

Cuando el módulo se especifica en el elemento system.webServer de web.config, y el sitio se ejecuta en IIS, funciona bien. La configuración es la siguiente:

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

Mi módulo se une al evento BeginRequest, todo funciona. Sin embargo, no puedo ejecutarlo utilizando el servidor web integrado de VS (Cassini). Intenté mover la configuración del módulo al elemento system.web en web.config, sin suerte. Puse un punto de interrupción en él, no pasa nada.

¿Alguna idea sobre por qué esto sería un problema?

(también probé el evento Application_BeginRequest en global.asax. Todavía no hay suerte, aunque yo prefiero mantener todo en web.config de todos modos.)

Respuesta

0

¿Usted intentó también poner la declaración de módulo en el elemento ? Cuando ejecuto en dev usando Cassini, generalmente es el lugar donde tengo que poner módulos para que funcionen.

+0

¿Podría ampliar esto más? No estoy seguro de lo que quieres decir. –

37

Cassini, el servidor web de desarrollo proporcionado con IIS utiliza la sintaxis módulo de IIS 6, por lo que debe duplicar el módulo de añadir al igual que

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

Tenga en cuenta que también he añadido una condición previa para la configuración de IIS 7

+0

esto parece prometedor, le responderemos pronto con los resultados ... –

+0

intenté esto. Mi módulo .ctores e Init() s, pero cualquier intento de adjuntar controladores de eventos se encuentra con PlatformNotSupportedException - Cassini parece ignorar por completo la sección IIS7. – Hafthor

+1

Bueno, sí, la Cassini sí; también tiene que agregar la sintaxis de IIS6, por lo que ambas tienen – blowdart

2

Si está ejecutando en IIS 7, poner el módulo en:

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

Si está ejecutando la Cassini (integrada de servidor web en miniatura de Visual Studio), puesto el módulo en:

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

IIS se bloqueará si le da la ubicación de Cassini.
Cassini se bloqueará si le das la ubicación de IIS.

Siempre que implemente, debo asegurarme de no implementar web.config. también incluyo las notas en web.config: mano izquierda

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

de IIS no sabe lo que la mano derecha de Cassini está haciendo - y ambos metido la pata.

Cuestiones relacionadas