Как мне сжать результат в формате JSON с ASP.NET в MVC с IIS 7.5


у меня возникли трудности с тем, чтобы 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%inetpubtempIIS Temporary Compressed Files" noCompressionForProxies="false">
    <scheme name="gzip" dll="%Windir%system32inetsrvgzip.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 57

4 ответа:

убедитесь, что ваш %WinDir%\System32\inetsrv\config\applicationHost.конфигурации содержит:

<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, используйте блокнот.exe, чтобы убедиться, что этот файл действительно изменен.

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

использование данного руководства

ни один из этих ответов работал для меня. Я действительно принял к сведению application/json; charset=utf-8 mime-типа, хотя.

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