【问题标题】:Garbled error page output using Gzip in ASP.NET / IIS7在 ASP.NET / IIS7 中使用 Gzip 输出乱码错误页面
【发布时间】:2010-03-10 10:43:26
【问题描述】:

我已经在我的网站上实现了Rick Strahl's GZipEncodePage 方法,它对网站本身非常有用。但是,当我的代码抛出异常时,“服务器错误”页面看起来像这样:


(来源:x01.co.uk

我尝试连接到Application_Error 以删除 GZip 标头,但无济于事。如何在错误时反转 GZipping?

【问题讨论】:

    标签: asp.net gzip


    【解决方案1】:

    我知道这个问题确实过时了。

    在 Application_Error 上从响应中删除过滤器,像这样

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

    希望这对任何人都有帮助。

    【讨论】:

    • 对于任何想知道 哪里 将这段代码放在哪里的人......将其转储到 Global.asax.cs 会产生奇迹。它还可以防止您需要记住从特定类继承(根据 Vaibhav 的回答),因为它在应用程序范围内使用。简洁、有效、完美。
    • stackoverflow.com/a/4548466/319980 建议使用 app.Response.Filter.Dispose() 而不是仅仅将其分配给 null。
    【解决方案2】:

    在我的例子中,我把它放在我的基页类中,如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多