IIS 7.5がweb.configのHttpCompression設定を無視する


8

MIMEタイプの動的圧縮を有効にしようとしていapplication/jsonます。

applicationHost.configで、次の変更を加えました。

<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Allow" />

また、次のコマンドでセクションのロックを解除してみました。

appcmd unlock config /section:system.webserver/httpcompression

私のweb.config設定(applicationHost.configと同じですが、mimetypeが追加されています):

    <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="*/*" enabled="false" />
        </dynamicTypes>
    </httpCompression>

しかし、応答はgzip圧縮されていません。mimetypeを直接applicationHost.configに追加すると機能するため、設定が正しいことはわかっています。

Failed Request Tracingを有効にしましたが、エラーは発生しません。


これをsystem.webServerノードの下に追加することもできます:<urlCompression doStaticCompression="true" doDynamicCompression="true" />
tugberk

残念ながら、これには違いがありませんでした。また、IIS 7.5ではのデフォルト値がにdoDynamicCompression変更されましたtrue
Ben

変更はIIS Expressで機能しますか?
tugberk 2012

いいえ、同じことをしなければなりません(applicationHost.configを直接変更します)
Ben

この問題を解決したことがありますか?
マリオ

回答:



1

同じ問題、つまりIIS(私の場合はIIS 10)をgzipに変換しようとしていますapplication/jsonが、回避策を発見しました。

ApplicationHost.configとweb.configを編集できませんでした。IISは単に.jsonデータの圧縮設定を無視します。それはあなたがそれを圧縮することを伝える他のMIMEタイプを喜んでgzipします。それでtext/json、web.configでmimetypeをに変更し、応答をgzip圧縮しました。

<system.webServer>
  <staticContent>
    <remove fileExtension=".json" />
    <mimeMap fileExtension=".json" mimeType="text/json" />
  </staticContent>
  <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
    <dynamicTypes>
      <add mimeType="text/json" enabled="true"/>
    </dynamicTypes>
    <staticTypes>
      <add mimeType="text/json" enabled="true"/>
    </staticTypes>
  </httpCompression>
  <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>

もちろん、それは他のものを壊すかもしれません-今あなたの応答が持っているので Content-Type:text/json


0

web.configからのHttpCompressionは、IIS 10を使用する場合にのみ可能です。IIS7.5では、appHost.configで使用する必要があります。

この投稿でその情報が見つかるまで、私はそれと戦っていました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.