我有两个相同的64位Windows 2008 R2服务器运行IIS 7.5(生产和质量保证)。
两者都以相同的方式安装,启用和配置动态压缩。
问题:
我的生产服务器不会对ANYTHING进行动态gzip压缩,而QA服务器会根据我的预期压缩gzip。
好消息是失败的请求跟踪日志显示原因:
原因代码:12 NO_MATCHING_CONTENT_TYPE
错误消息是两个服务器的applicationHost.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设置等等)但我想看看一切都是可能的原因。
更多信息:
保持简单,我现在只关注ASPX页面(我试图让“开箱即用”的压缩工作,而不是像JSON那样特别的东西......)
< / LI>我相信,当我在6个月前启动这些服务器并配置压缩时,我确认它可以同时使用它们。从那时起我没有更改任何配置设置,因此请将此信息用于它的价值。
我已经完成了以下操作,但他们还没有解决我的问题:
www.iis.net/learn/troubleshoot/performance-issues/troubleshooting-iis-compression-issues-in-iis6-iis7x
stackoverflow.com/a/7634875/1131855
我比较了system.webServer / HttpCompression的服务器“配置编辑器”设置,两者都是IDENTICAL。
dynamicCompressionDisableCpuUsage和dynamicCompressionEnableCpuUsage设置的默认设置为90和50.虽然有时Web服务器CPU可能会达到90%,但我经常监控它并且几乎总是低于50%。
我已经检查了我要使用ApplicationPool设置的用户的权限,并且该用户对压缩完成的文件夹具有FullControl权限。
以下是每台服务器上同一页面的请求和响应标头:
PRODUCTION(压缩无效)
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
质量保证(压缩工作)
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,当然压缩再次正常工作。
我每周在Prod服务器上回收一次AppPool,但今晚我将回收IIS并查看它是否读取配置设置并开始工作......
谢谢, 布伦特
答案 0 :(得分:3)
解决方案:
我在生产盒上回收了IIS,没有其他更改,压缩立即开始工作。所以,一切都是正确配置的,并且在一段时间内必须有一些“收缩”,但我不知道是什么或如何。