Итак, я пытаюсь заставить свое приложение отправлять свои ответы 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
. Когда он не работал, я включил ведение журнала трассировки «Неудачный запрос», чтобы найти код ошибки для DYNAMIC_COMPRESSION_NOT_SUCCESS
, который был NO_MATCHING_CONTENT_TYPE
.
Я пытался исследовать форумы и Google, но все, что я вижу, это люди, которые говорят, что использование mimeType с указанной кодировкой решает проблему для них, но в моем случае это все еще не работает, и я могу проверить, что ответ приходит назад с заголовком "Content-Type: application/json; charset=utf-8
"
Конечные точки, которые обслуживают ответы JSON, представляют собой стандартные веб-службы .NET ASMX, помеченные [ScriptService()]
в классе и [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
в методе. Они возвращают JSON нормально, но я не могу заставить динамическое сжатие работать на всю жизнь.
Поскольку это обычные веб-методы, я также добавил:
<add mimeType="text/xml" enabled="true" />
<add mimeType="text/xml; charset=utf-8" enabled="true" />
Чтобы попытаться сжать ответы в формате XML. Что разочаровывает, так это то, что это сжатие работает, а отправка JSON из того же метода - нет. На данный момент я немного растерялся.