2012-01-20 5 views
5

He creado un HttpModule simple que elimina los espacios en blanco de la respuesta antes de enviarlo al cliente. Esto funciona bien para una página aspx en IIS7.0 pero si creo una página html estática y la llamo, el HttpModule no entra en acción (la forma en que sé es porque la fuente contiene espacios en blanco, que de otro modo deberían haberse eliminado). Aparentemente hay algo que no estoy haciendo bien, pero no sé qué.¿Cómo hacer que la página Html estática pase por HttpModule en IIS7.0?

Mi sitio web está en un grupo de aplicaciones con .NET 4.0 y ManagedPipelineMode = Integrated.

He agregado mi módulo como un ManagedModule y se refiere a un ensamblaje de clave segura de GAC.

gracias

Editar- aquí es la parte system.webServer de web.config

<system.webServer> 
    ... 
    <modules runAllManagedModulesForAllRequests="true"> 
    <add name="RemoveWhitespaceHttpModule" 
     type="HttpModules.Modules.RemoveWhitespaceHttpModule, HttpModules, 
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=8a83u4bi47o9fo0d" 
      preCondition="" /> 
    </modules> 
    <defaultDocument> 
    <files> 
     <add value="TestForm.aspx" /> 
    </files> 
    </defaultDocument> 
</system.webServer> 

Editar- arreglaron. Para todos los interesados, así es como mi módulo comprueba la respuesta y luego decide si desea continuar con la eliminación de espacios en blanco o no

if (contentType.Equals("text/html") 
    && httpContext.Response.StatusCode == 200 
    && httpContext.CurrentHandler != null) 
{ ... } 

El problema fue con la condición tercera httpContext.CurrentHandler! = Null. al llamar a este módulo para páginas .html estáticas, el actualHandler era nulo y, por lo tanto, el código nunca entró para manipular html. He eliminado esta tercera condición y funciona ahora. gracias por sus respuestas a todos

+0

cambie el nombre de su página .html estática a .aspx (no es necesario cambiar el contenido) y la cosa debería funcionar – Alex

+0

GZIP ya hace esto http://stackoverflow.com/questions/702124/enable-iis7-gzip – jrummell

+0

@alex - eso no es lo que quiero lograr. Podría haberlo hecho fácilmente y no haber planteado esta pregunta en absoluto. Quiero poder utilizar este httpmodule no solo para aplicaciones asp.net, sino también para aplicaciones de fusión fría. mi objetivo es hacerlo funcionar para .html páginas y llevarlo desde allí. –

Respuesta

3

Esto debería hacer el truco, en el web.config:.

<modules runAllManagedModulesForAllRequests="true"></modules> 

Esta es una solución rápida y fácil, pero puede causar problemas/problemas de rendimiento.

+0

ya lo intenté, no funciona. –

+0

¿Tiene su módulo registrado en system.webserver> modules? de lo contrario, no será recogido. y si es así, publique su porción web.config – ScottE

+0

sí ... agregué la parte system.webserver de mi web.config en la pregunta principal –

1

Debe mirar la asignación de controlador en su IIS.

El funcionamiento de un controlador es que en IIS, el controlador está registrado y se supone que maneja un tipo de página de particuler. Puede consultar las "Asignaciones de controlador" en IIS [En el comando de ejecución escriba inetmgr y presione enter. Administrador de IIS se abrirá y buscar asignaciones de controlador en la sección IIS]

+0

qué específicamente me aconsejarías configurar. Ya he intentado agregar una asignación de controlador, con * .html, pero esto no sirvió para nada –

+3

Me preguntó acerca de HttpModule, no HttpHandler – brushleaf

+0

@brushleaf: Gracias. Estoy corregido. – Kangkan

Cuestiones relacionadas