我使用HttpModule实现gzip压缩;这就是它的样子:
public void Init(HttpApplication context)
{
context.BeginRequest += (new EventHandler(context_BeginRequest));
}
private void context_BeginRequest(Object source, EventArgs e)
{
HttpContext context = HttpContext.Current;
string url = context.Request.Url.ToString();
if (url.Contains("/ClientFiles"))
{
string AcceptEncoding = context.Request.Headers["Accept-Encoding"];
if (!string.IsNullOrEmpty(AcceptEncoding) && AcceptEncoding.Contains("gzip"))
{
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
HttpContext.Current.Response.AppendHeader("Content-Encoding", "gzip");
HttpContext.Current.Response.Cache.VaryByHeaders["Accept-Encoding"] = true;
}
}
}
当我在本地计算机上运行时,我看到文件被gzip压缩,一切正常。当我在我的共享托管服务器上运行相同的代码时,它没有进行压缩(即文件默认不被压缩),文件也被gzip压缩,但内容只是一堆字符#39; t解压缩。为什么这样,我该如何解决?
我只想使用HttpModule实现gzip,所以请不要回答IIS。
答案 0 :(得分:0)
我的猜测是你的共享托管服务器已经启用了gzip压缩(很抱歉,这是一种“IIS回答”......)并且内容因此被压缩了两次。
您可以通过暂时禁用自己的压缩代码来检查这一点,并检查内容是否已被压缩。