【发布时间】:2010-09-06 17:28:22
【问题描述】:
我创建了一个名为 AddGZip 的扩展方法,如下所示:
public static void AddGZip(this HttpResponse response)
{
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
response.AppendHeader("Content-Encoding", "gzip");
}
这是一个非常精简的代码版本:
var response = HttpContext.Current.Response;
var request = HttpContext.Current.Request;
var result = File.ReadAllText(path);
if (request.SupportsGZip)
{
response.AddGZip();
}
response.Write(result);
response.Flush();
当您在支持 GZip 的网络浏览器中查看响应时,您会收到如下错误:
"XML 解析错误:未关闭的令牌 地点:http://webserver1/1234.xml 第 78 行,第 1 列:"
当我查看源代码时,它基本上错过了 XML 文件末尾的最后一个 >。所以 1 或 2 个字节。
如果我注释掉 AddGZip Line 它工作正常。不过我真的很想支持 GZip,因为 XML 可能很大。
有人对我有什么建议吗?我试过检查很多博客,但似乎没有针对此类错误的解决方案。
戴夫
【问题讨论】:
-
我应该说的一件事是我使用的是 IIS 6.0
标签: c# asp.net gzip httpresponse gzipstream