IIS7 использует кодировку содержимого, чтобы решить, следует ли сжимать ответ (при условии, конечно, что браузер может принять gzip). Они установлены в applicationHost.config, и по умолчанию список равен
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
Если вы вызываете веб-сервис напрямую, XML-ответ имеет тип контента text/xml
, который сжимается. При вызове AJAX ответ JSON имеет тип содержимого application/json
, поэтому он не сжимается. Добавление следующего в applicationHost.config должно исправить это ...
<add mimeType="application/json" enabled="true" />