3

httpCompressionIIS7で構成しようとしています。httpCompressionグーグルで調べてみると、configのセクションを使って作成できることがわかりました。問題は、web.configからは機能させられないことです。

すべての構成を作成するapplicationHost.configと、必要に応じて機能しますが、グローバルではなく、アプリケーションごとにこの構成を作成できるようにしたいと考えています。

セクション定義をに変更applicationHost.configし、セクションをweb.config<section name="httpCompression" overrideModeDefault="Allow" />に移動しました。httpCompression

<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から圧縮構成をまったく読み取らないようです。

変更するたびに、アプリケーションプールをリサイクルするので問題ありません。

4

2 に答える 2

6

この 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();
}

ServerManagerMicrosoft.Web.AdministrationNuGet のパッケージから取得されます。

于 2013-12-12T19:13:01.783 に答える
3

構成ファイルの階層全体を確認する必要があります。

からセクションを削除した場合は、親ディレクトリから、または親ディレクトリをapplicationHost継承している可能性があります。machine.configweb.config

于 2013-03-18T11:42:40.340 に答える