2012-01-20 3 views
5

Ho creato un semplice HttpModule che rimuove gli spazi bianchi dalla risposta prima di inviarli al client. Funziona bene per una pagina aspx su IIS7.0 ma se creo una pagina html statica e la chiamo, HttpModule non esegue il kick in (il modo in cui so è perché la fonte contiene spazi bianchi, che altrimenti avrebbero dovuto essere rimossi). Apparentemente c'è qualcosa che non sto facendo bene, ma non so cosa.Come rendere la pagina Html statica attraverso HttpModule in IIS7.0?

Il mio sito Web è in un pool di applicazioni con .NET 4.0 e ManagedPipelineMode = Integrated.

Ho aggiunto il mio modulo come ManagedModule e fa riferimento a un assembly di chiave sicura da GAC.

grazie

Modifica- qui è la parte system.webServer da 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> 

Modifica- riparato. Per chiunque sia interessato, questo è come il mio modulo verifica la risposta e poi decide se procedere con la rimozione spazi bianchi o no

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

Il problema era con la terza condizione di cui sopra httpContext.CurrentHandler! = Null. quando chiamavo questo modulo per le pagine .html statiche, currentHandler era nullo e quindi il codice non andava mai dentro per manipolare html. ho rimosso questa terza condizione e ora funziona. grazie per le vostre risposte tutti

+0

rinomina la tua pagina .html statica in .aspx (nessuna modifica nel contenuto necessario) e la cosa dovrebbe funzionare – Alex

+0

GZIP già fa questo http://stackoverflow.com/questions/702124/enable-iis7-gzip – jrummell

+0

@alex - questo non è ciò che voglio ottenere. avrei potuto farlo facilmente e non sollevare questa domanda affatto. Voglio essere in grado di utilizzare questo httpmodule non solo per le applicazioni asp.net, ma anche per quelle a fusione fredda. il mio obiettivo è quello di farlo funzionare per le pagine .html e prenderlo da lì. –

risposta

3

Questo dovrebbe fare il trucco, nel web.config:.

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

questa è una soluzione semplice e veloce, ma può causare problemi/problemi di prestazioni.

+0

già provato, non funziona. –

+0

Il modulo è stato registrato in system.webserver> moduli? altrimenti non verrà raccolto. e se sì, per favore pubblica la tua parte web.config – ScottE

+0

sì .. ha aggiunto la parte system.webserver dal mio web.config nella domanda principale –

1

È necessario esaminare la mappatura dell'handler in IIS.

Come funziona un gestore su IIS, il gestore è registrato e si suppone che gestisca un tipo particolare di pagina. È possibile esaminare i "Mapping gestori" in IIS [nel comando di esecuzione tipo inetmgr e premere invio. IIS Manager pop-up e cercare Mapping gestori nella sezione IIS]

+0

cosa specificatamente mi consiglieresti di configurare. Ho già provato ad aggiungere una mappatura del gestore, con * .html ma questo non ha avuto alcuno scopo –

+3

Ha chiesto di HttpModule, non HttpHandler – brushleaf

+0

@brushleaf: Grazie. Sono corretto. – Kangkan