IIS7 gzip压缩 - httpCompression节(IIS7 GZIP Compress

2019-08-17 17:26发布

我尝试配置httpCompression IIS7上。 谷歌搜索,我发现它可以使用进行httpCompression在配置部分。 这个问题,我不能让它从web.config中工作。

当我做在配置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中读取压缩配置的。

每次更改后,我会把应用程序池回收,所以它不是一个问题。

Answer 1:

您应检查整个配置文件的层次结构 。

如果您删除的部分applicationHost你可以从继承machine.configweb.config父目录的。



Answer 2:

按照这个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。



文章来源: IIS7 GZIP Compression - httpCompression section