在IIS7.5中无法读取web.config中的HttpCompression元素

时间:2011-11-09 18:44:02

标签: iis-7 compression

我正在尝试覆盖运行Windows 7的IIS 7.5上的站点的Web.config中的httpCompression元素,但它似乎根本没有被读取。

要检查,我在元素中引入了typeos,但我甚至无法获得配置错误。

以下是Web.config

httpCompression元素的示例
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
  <SCHEMEx name="deflate" dll="%Windir%\system32\inetsrv\gzip.dll" />
  <dynamicTypes>
    <add mimeType="text/*" enabled="false" />
    <add mimeType="message/*" enabled="true" />
    <add mimeType="application/x-javascript" enabled="true" />
    <add mimeType="*/*" enabled="false" />
  </dynamicTypes>
  <staticTUPES>
  </staticTUPES>
</httpCompression>

当我在其他元素(例如ie modules)中引入类似错误时,我收到配置错误,因此我知道配置文件已被读取。

我已解锁ApplicationHost.config中的部分:

appcmd unlock config /section:system.webserver/httpcompression

但是这不起作用,所以我手动更改了ApplicationHost.config,现在它显示为:

...
<section name="httpCompression" overrideModeDefault="Allow" />
...

我真正想要实现的是将“deflate”设置为我的某个网站的唯一压缩方案。

2 个答案:

答案 0 :(得分:4)

要使其正常工作,解锁application.config文件后,您还必须通过命令行设置特定配置。

1)解锁application.config的 httpCompression 部分:

var_dump

2)假设你想要处理动态JSON请求(例如 mimetype = application / json ),你应该使用这个命令:

C:\Windows\System32\inetsrv\appcmd.exe unlock config /section:system.webServer/httpCompression

3)如果您的情况是JSON请求,您可能还想处理 charset = utf-8 变体,由于某些原因,IIS在大多数情况下会回复您:

C:\Windows\System32\inetsrv\appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/json',enabled='True']" /commit:apphost

答案 1 :(得分:1)

我之前有过一个类似的问题,很久以前就没详细记得了。我想我直接对ApplicationHost.config(%windir%\ system32 \ inetsrv \ config)进行了更改,但不是理想的解决方案。

假设你看过这里 http://www.iis.net/configreference/system.webserver/httpcompression - 您是否尝试过使用此帖中提到的清除元素?