【发布时间】:2010-03-10 10:43:26
【问题描述】:
我已经在我的网站上实现了Rick Strahl's GZipEncodePage 方法,它对网站本身非常有用。但是,当我的代码抛出异常时,“服务器错误”页面看起来像这样:
(来源:x01.co.uk)
我尝试连接到Application_Error 以删除 GZip 标头,但无济于事。如何在错误时反转 GZipping?
【问题讨论】:
我已经在我的网站上实现了Rick Strahl's GZipEncodePage 方法,它对网站本身非常有用。但是,当我的代码抛出异常时,“服务器错误”页面看起来像这样:
(来源:x01.co.uk)
我尝试连接到Application_Error 以删除 GZip 标头,但无济于事。如何在错误时反转 GZipping?
【问题讨论】:
我知道这个问题确实过时了。
在 Application_Error 上从响应中删除过滤器,像这样
protected void Application_Error(Object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
app.Response.Filter = null;
}
希望这对任何人都有帮助。
【讨论】:
Global.asax.cs 会产生奇迹。它还可以防止您需要记住从特定类继承(根据 Vaibhav 的回答),因为它在应用程序范围内使用。简洁、有效、完美。
在我的例子中,我把它放在我的基页类中,如下所示:
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;
}
}
【讨论】: