web-dev-qa-db-ja.com

IIS 7.5でASP.NET MVCからのJson結果を圧縮する方法

IIS 7を作成するのが困難です。ASP.NETMVCからJsonの結果を正しく圧縮します。IISで静的および動的圧縮を有効にしました。通常のテキスト/ htmlおよびリクエストを表示すると、accept-encoding gzipヘッダーが存在します。レスポンスのMIMEタイプは「application/json」ですが、圧縮されていません。

この問題はMimeTypeに関連しているように見えます。 mimeType="*/*"を含めると、応答が正しくgzip圧縮されていることがわかります。 IISを取得して、ワイルドカードmimeTypeを使用せずに圧縮するにはどうすればよいですか?この問題は、ASP.NET MVCがコンテンツタイプヘッダーを生成する方法と関係があると思います。

CPU使用率は、動的スロットルしきい値を大きく下回っています。 IISからトレースログを調べると、一致するMIMEタイプが見つからないため、圧縮に失敗していることがわかります。

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="false">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
    <dynamicTypes>
        <add mimeType="text/*" enabled="true" />
        <add mimeType="message/*" enabled="true" />
        <add mimeType="application/x-javascript" enabled="true" />
        <add mimeType="application/json" enabled="true" />
    </dynamicTypes>
    <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="application/json" enabled="true" />
    </staticTypes>
</httpCompression>
56
Gareth Saul

%WinDir%\ System32\inetsrv\config\applicationHost.configに以下が含まれていることを確認してください。

<system.webServer>
    <urlCompression doDynamicCompression="true" />
    <httpCompression>
      <dynamicTypes>
        <add mimeType="application/json" enabled="true" />
        <add mimeType="application/json; charset=utf-8" enabled="true" />       
      </dynamicTypes>
    </httpCompression>
</system.webServer>

@ -AtanasKorchevの link から。

コメントで@simon_weaverが言ったように、64ビットWindowsで32ビットエディターを使用して間違ったファイルを編集している可能性があります。notepad.exeを使用して、このファイルが実際に変更されていることを確認してください。

59
deerchao

here で強調表示されているアプローチを使用しました。

22
Atanas Korchev

このガイドを使用

これらの答えはどれも私にとってはうまくいきませんでした。 application/json;に注意しました。ただし、charset = utf-8mime-type。

14
Ryan Kirkman

このアプローチ をお勧めします
CompressAttributeクラスを作成し、ターゲットアクションを設定します。

6
takepara