IIS7 gzip压缩 - httpCompression部分
问题描述:
我试图在IIS7配置httpCompression
。通过谷歌搜索,我发现它可以在配置中使用httpCompression
部分。这个问题,我不能让它从web.config工作。IIS7 gzip压缩 - httpCompression部分
当我做出applicationHost.config
一切配置工作需要,但我希望能够使每个应用程序,而不是全局此配置。
我改变了applicationHost.config
节定义<section name="httpCompression" overrideModeDefault="Allow" />
和移动httpCompression
部分的web.config:
<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="application/json" enabled="true" />
<add mimeType="application/json; charset=utf-8" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
</httpCompression>
我缺少什么?它看起来像IIS不从web.config读取压缩配置。
每次更改之后,我让应用程序池回收,所以它不是一个问题。
答
按照此ServerFault回答:https://serverfault.com/a/125156/117212 - 您无法更改web.config中的httpCompression,它需要在applicationHost.config文件中完成。下面是我在Azure的Web角色使用修改applicationHost.config文件并添加MIME类型的压缩代码:
using (var serverManager = new ServerManager())
{
var config = serverManager.GetApplicationHostConfiguration();
var httpCompressionSection = config.GetSection("system.webServer/httpCompression");
var dynamicTypesCollection = httpCompressionSection.GetCollection("dynamicTypes");
Action<string> fnCheckAndAddIfMissing = mimeType =>
{
if (dynamicTypesCollection.Any(x =>
{
var v = x.GetAttributeValue("mimeType");
if (v != null && v.ToString() == mimeType)
{
return true;
}
return false;
}) == false)
{
ConfigurationElement addElement = dynamicTypesCollection.CreateElement("add");
addElement["mimeType"] = mimeType;
addElement["enabled"] = true;
dynamicTypesCollection.AddAt(0, addElement);
}
};
fnCheckAndAddIfMissing("application/json");
fnCheckAndAddIfMissing("application/json; charset=utf-8");
serverManager.CommitChanges();
}
ServerManager
来自Microsoft.Web.Administration
包的NuGet。
我找到了解决办法。我修改区段定义中的applicationHost.config从,以(allowDefinition的= “无处不在”解决了这个问题)。谢谢 – 2013-03-18 11:54:51
@AlexDn:我想你应该把你的解决方案作为实际的答案。 – sharptooth 2013-11-07 14:44:20
@sharptooth其实我只能在IIS服务器级别配置它。没有找到每个应用程序配置的解决方案。 – 2013-11-07 17:06:36