IIS 7上的GZip压缩无法正常工作(COMPRESSION_DISABLED)- 我该如何解决?

5

我无法让我的 IIS7 Web 服务器与 gzip 协同工作。

我正在运行 Windows 2008 64位 IIS 7(.NET Web 应用程序)。我已通过 IIS 模块启用了 Gzip,并在我的 webconfig 中添加了以下行:

urlCompression doStaticCompression="true" doDynamicCompression="true" />

每次我查看FailedReqLogfiles都会得到以下信息:
DYNAMIC_COMPRESSION_START 
-DYNAMIC_COMPRESSION_NOT_SUCCESS 
Reason 2 
Reason COMPRESSION_DISABLED

有什么想法吗?

提前感谢。

3个回答

8

伙计,我之前花了很长时间才让这个工作起来。

到目前为止,你已经正确地要求IIS7使用GZIP压缩,通过向

<system.webServer>
    <urlCompression doDynamicCompression="true" dynamicCompressionBeforeCache="true" />
 ....
</system.webServer>

注意:system.webServer 是针对 IIS7+ 设置的。
现在问题来了:默认情况下,无论用户是否通过 web.config 请求打开它,IIS7 都会禁止所有网站使用 gzip 压缩(在该服务器上)。为什么?想象一下一个大型 Web 主机(例如 Discount ASP.NET 等),允许人们打开 GZIP 压缩。数百个站点都这样做。服务器 CPU 开始(可能)飙升。
因此,除非服务器管理员更改服务器级别上的 urlCompression 设置(即在 application.config 文件中),否则 IIS7 将忽略此设置。
所以 - 让我们解决这个问题(假设您可以访问 application.config 文件)。
首先,启动 IIS,单击主服务器名称,然后单击“配置编辑器”。这允许我们更改整个服务器(app.config)的设置。
现在,选择元素 system.webServer,然后选择 urlCompression。
现在 - > 注意,您现在可以解锁部分或属性吗?我只是解锁了整个部分。在我的下面的图片中,它说 LOCK..因为我已经解锁了它。因此,请解锁该部分,然后尝试一下。如果仍然不起作用,请尝试重新启动 WWW 服务。
请告诉我这是否适用于您 :)

哦,我没有配置编辑器。这是一个附加组件吗? - RRG
顺便说一下,我在服务器上有完全的访问权限。 - RRG
好的...正在安装IIS管理包/ 嗯,它已经解锁了 :( - RRG
默认情况下,它是被锁定的。因此,您之前是否手动解锁过它? - Pure.Krome
嗯,我不这么认为。但如果是的话,那又有什么关系呢? - RRG

2

好的!以下标签在applicationHost.config中缺失...糟糕!

<httpCompression directory="D:\gzip" minFileSizeForComp="256">

添加后,它就正常工作了。
 <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
            <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />

0

我只需在web.config文件的<system.webServer>之间使用<urlCompression doDynamicCompression="true" doStaticCompression="true" />即可启用Gzip压缩。顺便说一句,您的建议也很有帮助和有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接