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

时间:2015-03-19 14:10:09

标签: asp.net iis-7

我有两个相同的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设置等等)但我想看看一切都是可能的原因。

更多信息:

  1. 保持简单,我现在只关注ASPX页面(我试图让“开箱即用”的压缩工作,而不是像JSON那样特别的东西......)

    < / LI>
  2. 我相信,当我在6个月前启动这些服务器并配置压缩时,我确认它可以同时使用它们。从那时起我没有更改任何配置设置,因此请将此信息用于它的价值。

  3. 我已经完成了以下操作,但他们还没有解决我的问题:

  4. www.iis.net/learn/troubleshoot/performance-issues/troubleshooting-iis-compression-issues-in-iis6-iis7x

    stackoverflow.com/a/7634875/1131855

    1. 我比较了system.webServer / HttpCompression的服务器“配置编辑器”设置,两者都是IDENTICAL。

    2. dynamicCompressionDisableCpuUsage和dynamicCompressionEnableCpuUsage设置的默认设置为90和50.虽然有时Web服务器CPU可能会达到90%,但我经常监控它并且几乎总是低于50%。

    3. 我已经检查了我要使用ApplicationPool设置的用户的权限,并且该用户对压缩完成的文件夹具有FullControl权限。

    4. 以下是每台服务器上同一页面的请求和响应标头:

    5. 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并查看它是否读取配置设置并开始工作......

      谢谢, 布伦特

1 个答案:

答案 0 :(得分:3)

解决方案:

我在生产盒上回收了IIS,没有其他更改,压缩立即开始工作。所以,一切都是正确配置的,并且在一段时间内必须有一些“收缩”,但我不知道是什么或如何。