Итак, я пытаюсь заставить свое приложение отправлять свои ответы JSON с помощью динамического сжатия и gzip. К сожалению, это не работает. Все статическое сжатие на сервере работает нормально, но не динамично.
Я установил это, добавив:
<add mimeType="application/json" enabled="true" />
<add mimeType="application/json; charset=utf-8" enabled="true" />
В раздел <dynamicTypes> <httpCompression> в файле applicationHost.config. Я использую Charles для проверки HTTP-запросов, и я могу проверить, что я отправляю запросы с помощью набора заголовков Accept-Encoding: gzip, deflate. Я пробовал как с Accept: */*, так и Accept: application/json. Когда он не работал, я включил журнал отслеживания "Failed Request", чтобы найти код ошибки для DYNAMIC_COMPRESSION_NOT_SUCCESS, который был NO_MATCHING_CONTENT_TYPE.
Я пытаюсь исследовать форумы и Google, но все, что я вижу, это люди, говорящие, что использование mimeType с указанной кодировкой исправляет проблему для них, но в моем случае она все еще не работает, и я могу проверить, что ответ возвращается с заголовком, говоря Content-Type: application/json; charset=utf-8
Конечными точками, которые обслуживают ответы JSON, являются стандартные .NET ASMX WebServices, аннотированные с помощью [ScriptService()] в классе и [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] в методе. Они возвращают JSON в порядке, но я не могу заставить динамическое сжатие работать на всю жизнь.
Так как это обычные веб-методы, я также добавил:
<add mimeType="text/xml" enabled="true" />
<add mimeType="text/xml; charset=utf-8" enabled="true" />
Попробовать gzip ответы XML. Что расстраивает то, что это сжатие работает при отправке JSON из того же метода, нет. На данный момент я рад в убыток.