IIS 7.5动态压缩无法工作 - NO_MATCHING_CONTENT_TYPE

4
我有两台相同的64位Windows 2008 R2服务器,运行着IIS 7.5(生产和QA)。
两台服务器都安装、启用并以相同方式配置了动态压缩。
问题:
我的生产服务器不对任何内容进行动态gzip压缩,而QA服务器确实对我期望压缩的内容进行了gzip压缩。
好消息是,失败请求跟踪日志显示了一个原因:
原因代码:12 NO_MATCHING_CONTENT_TYPE
坏消息是,应用程序Host.config文件中的压缩设置在两台服务器上都是相同的。我从未手动编辑过它们,我使用WinMerge进行比较(包括空格),并且我没有在web.config中配置任何与此相关的内容。
以下是来自PROD机器的两个与压缩相关的部分(再次强调,它们在QA机器上是相同的):
    <section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />

    <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
        <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
        <staticTypes>
            <add mimeType="text/*" enabled="true" />
            <add mimeType="message/*" enabled="true" />
            <add mimeType="application/x-javascript" enabled="true" />
            <add mimeType="application/atom+xml" enabled="true" />
            <add mimeType="application/xaml+xml" enabled="true" />
            <add mimeType="*/*" enabled="false" />
        </staticTypes>
        <dynamicTypes>
            <add mimeType="text/*" enabled="true" />
            <add mimeType="message/*" enabled="true" />
            <add mimeType="application/x-javascript" enabled="true" />
            <add mimeType="*/*" enabled="false" />
        </dynamicTypes>
    </httpCompression>

在我看来,根据上面的配置,我不应该得到NO_MATCHING_CONTENT_TYPE的错误。一个ASPX文件返回text/html类型的内容,而配置中明确显示启用了mimeType为text/*。
鉴于错误信息,我认为我在以下部分检查的许多事情甚至不适用(权限/压缩禁用和启用CPU设置等),但我想查看所有可能的原因。
更多信息:
1. 简单起见,我现在只关注ASPX页面(我试图让“开箱即用”的压缩工作,而不是像JSON这样的特殊内容...)
2. 我相信在6个月前启动这些服务器并配置压缩时,我验证了它们都可以使用。我之后没有更改任何配置设置,所以请理解这些信息的价值。
3. 我已经按照以下步骤进行了检查,但仍未解决我的问题: www.iis.net/learn/troubleshoot/performance-issues/troubleshooting-iis-compression-issues-in-iis6-iis7x stackoverflow.com/a/7634875/1131855
4. 我已比较了系统.webServer / HttpCompression的“配置编辑器”设置,并且两者完全相同。
5. dynamicCompressionDisableCpuUsage和dynamicCompressionEnableCpuUsage的默认值为90和50。虽然有时Web服务器的CPU可能会达到90%,但我经常监视它,它几乎总是低于50%。
6. 我已检查了我设置应用程序池使用的用户的权限,并且该用户具有在执行压缩的文件夹中的完全控制权限。
7. 这是每个服务器上相同页面的请求和响应标头:
生产环境(压缩不起作用)
GET /Default.aspx HTTP/1.1
Host: www.sitenameremoved.com
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36
Referer: https://www.sitenameremoved.com/auth/authLogon.aspx
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 274135
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Date: Thu, 19 Mar 2015 12:07:02 GMT
Strict-Transport-Security: max-age=7776000

QA(压缩工作)

GET /Default.aspx HTTP/1.1
Host: qa.sitenameremoved.com
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36
Referer: https://qa.sitenameremoved.com/auth/authLogon.aspx
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Date: Thu, 19 Mar 2015 12:08:16 GMT
Content-Length: 64963
Strict-Transport-Security: max-age=7776000

我已经搜索了整个互联网,还有什么我错过的吗?
可能还有一些有趣的附加信息(稍后添加)
为了检查我是否能在我的QA盒子上复制该问题,我使用配置编辑器从system.webServer/httpCompression下的dynamicTypes条目中删除text / * mime类型。
我启用了故障请求跟踪,重新启动了IIS,点击登录页面并在Fiddler中看到它没有被gzip压缩。 我查看了由失败请求跟踪生成的xml文件,并且如预期的那样,动态压缩失败,原因是12 NO_MATCHING_CONTENT_TYPE。
然后我添加了text/* mime类型,重启了IIS,当然压缩又开始工作了。
我每周对生产服务器进行一次应用程序池回收,但今晚我将回收IIS并查看它是否读取配置设置并开始工作...
谢谢, 布伦特
1个回答

4

解决方案:

我在生产环境中重新启动了IIS,并且没有做其他更改,压缩立即开始工作。因此,一切都已正确配置,但在某段时间内可能会出现某些问题,但我不知道是什么或如何发生。


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