gzip在localhost上工作,但在服务器上没有

时间:2014-08-12 13:51:02

标签: c# asp.net gzip

我使用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。

1 个答案:

答案 0 :(得分:0)

我的猜测是你的共享托管服务器已经启用了gzip压缩(很抱歉,这是一种“IIS回答”......)并且内容因此被压缩了两次。

您可以通过暂时禁用自己的压缩代码来检查这一点,并检查内容是否已被压缩。