Khi tôi đang sử dụng bộ lọc nén và gặp lỗi, trang lỗi chỉ là các ký tự vô nghĩa. Vấn đề có vẻ là khi IIS chuyển sang trang lỗi, bộ lọc nén vẫn có hiệu lực, nhưng tiêu đề sẽ bị xóa. Không có tiêu đề "Content-encoding: gzip", trình duyệt chỉ hiển thị dữ liệu nhị phân được nén gzipped.Với tính năng nén hành động, thông báo lỗi máy chủ xóa tiêu đề mã hóa nội dung và hiển thị dưới dạng gibberish
Tôi đang sử dụng IIS7.5, ASP.NET MVC 2 Preview 2 và một ActionFilter trông như thế này:
public class CompressResponseAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var request = filterContext.HttpContext.Request;
var response = filterContext.HttpContext.Response;
var acceptEncoding = request.Headers["Accept-Encoding"];
if (string.IsNullOrEmpty(acceptEncoding))
return;
acceptEncoding = acceptEncoding.ToLowerInvariant();
if (acceptEncoding.Contains("gzip"))
{
response.AppendHeader("Content-encoding", "gzip");
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
}
else if (acceptEncoding.Contains("deflate"))
{
response.AppendHeader("Content-encoding", "deflate");
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
}
}
}
Bất cứ ai khác có kinh nghiệm này?
Cũng có thể đánh dấu điều này là câu trả lời của bạn, vì nó hoạt động ... :) –
Điều này đã khiến tôi thất vọng trong nhiều tháng, nhưng tôi đã có ELMAH để xem các lỗi thực sự thay vì vô nghĩa, hạnh phúc để cuối cùng sửa nó:) –