2010-03-10 34 views
15

Tôi đã triển khai phương pháp Rick Strahl's GZipEncodePage trên trang web của mình và nó hoạt động tuyệt vời cho chính trang web đó. Tuy nhiên, khi mã của tôi ném một ngoại lệ trang "Server Error" trông giống như sau:Đầu ra trang bị lỗi khi sử dụng Gzip trong ASP.NET/IIS7

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

Tôi đã cố gắng để hooking vào Application_Error trong một nỗ lực để loại bỏ các tiêu đề GZip nhưng vô ích. Làm thế nào tôi có thể đảo ngược GZipping do lỗi?

Trả lời

21

Tôi hiểu rằng câu hỏi này thực sự đã lỗi thời.

On Application_Error loại bỏ bộ lọc từ phản ứng, giống như

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

Hy vọng điều này này giúp bất cứ ai.

+0

Làm việc cho tôi. Cảm ơn. –

+0

Đối với bất cứ ai tự hỏi * nơi * chính xác để đặt mã này ... bán phá giá nó vào 'Global.asax.cs' công trình kỳ diệu. Nó cũng ngăn cản bạn không cần phải nhớ kế thừa từ một lớp cụ thể (theo câu trả lời của Vaibhav) bởi vì nó được sử dụng rộng rãi trong ứng dụng. Gọn gàng, hiệu quả, hoàn hảo. – EAMann

+1

http://stackoverflow.com/a/4548466/319980 đề xuất sử dụng app.Response.Filter.Dispose() thay vì chỉ gán nó cho null. –

3

Trong trường hợp của tôi, tôi đặt này trong lớp basepage tôi như vậy:

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; 
    } 
} 
Các vấn đề liên quan