2010-03-10 7 views
15

Ich habe Rick Strahl's GZipEncodePage Methode auf meiner Website implementiert und es funktioniert super für den Standort selbst. Wenn jedoch mein Code eine Ausnahme der „Server Error“ wirft sieht Seite etwas wie folgt aus:Garbled Fehlerseite Ausgabe mit gzip in ASP.NET/IIS7

garble garble http://x01.co.uk/garbled_garble.gif

Ich habe versucht, in Application_Error in dem Bemühen, Einhaken der GZIP-Header, aber ohne Erfolg zu entfernen. Wie kann ich das GZipping bei einem Fehler rückgängig machen?

Antwort

21

Ich bin zu verstehen, dass diese Frage wirklich veraltet ist.

Auf Application_Error entfernen Filter aus der Antwort, wie dies

protected void Application_Error(Object sender, EventArgs e) 
{ 
    HttpApplication app = sender as HttpApplication; 
    app.Response.Filter = null; 
} 

Hope this jemand hilft.

+0

für mich gearbeitet. Vielen Dank. –

+0

Für alle * fragen, wo * genau diesen Code zu setzen ... es in 'Global.asax.cs' Dumping wirkt Wunder. Es verhindert, dass Sie auch benötigen, aus einer bestimmten Klasse zu erben zu erinnern (per Vaibhav Antwort), weil es applikationsweit verwendet wird. Prägnant, effektiv, perfekt. – EAMann

+1

http://stackoverflow.com/a/4548466/319980 schlägt app.Response.Filter.Dispose() verwenden, anstatt nur die Zuordnung es auf null. –

3

In meinem Fall Ich habe dies in der meine Basepage Klasse wie folgt:

public class BasePage : System.Web.UI.Page 
{ 
    protected override void OnError(EventArgs e) 
    { 
     base.OnError(e); 
     System.Web.HttpContext context = System.Web.HttpContext.Current; 
     if (context != null && context.Response.Filter != null) 
      context.Response.Filter = null; 
    } 
}