Итак, я пытаюсь заставить свое приложение отправлять свои ответы 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 из того же метода, нет. На данный момент я рад в убыток.