Как сжать результат Json из ASP.NET MVC с IIS 7.5 - PullRequest
56 голосов
/ 26 января 2010

Мне трудно заставить IIS 7 правильно сжимать результат Json из ASP.NET MVC. Я включил статическое и динамическое сжатие в IIS. Я могу проверить с помощью Fiddler, что обычный текст / HTML и подобные записи сжимаются. При просмотре запроса присутствует gzip-заголовок accept-encoding. Ответ имеет mimetype "application / json", но не сжат.

Я определил, что проблема связана с MimeType. Когда я включаю mimeType="*/*", я вижу, что ответ правильно упакован. Как я могу получить IIS для сжатия без использования подстановочного знака mimeType? Я предполагаю, что эта проблема связана с тем, как ASP.NET MVC генерирует заголовки типов контента.

Загрузка ЦП значительно ниже порога динамического регулирования. Когда я проверяю журналы трассировки из 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>

Ответы [ 4 ]

58 голосов
/ 10 мая 2012

Убедитесь, что ваш % 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.

Как сказал @simon_weaver в комментариях, вы можете редактировать неправильный файл с помощью 32-битного редактора в 64-битной Windows, используйте notepad.exe, чтобы убедиться, что этот файл действительно изменен.

22 голосов
/ 26 января 2010

Я успешно использовал подход, выделенный здесь .

14 голосов
/ 19 июня 2012

Используйте это руководство

Ни один из этих ответов не помог мне. Я принял к сведению приложение / json; charset = utf-8 mime-type.

6 голосов
/ 26 января 2010

Я рекомендую такой подход
Создайте CompressAttribute класс и установите целевое действие.

...