Как я могу заставить ASP.NET AJAX отправить JSON-ответ с GZip-сжатием? - PullRequest
7 голосов
/ 28 октября 2008

У меня включено сжатие в IIS7, и оно работает, как и ожидалось, для всех ответов, кроме тех, которые созданы ASP.NET AJAX. У меня есть веб-сервис, который предоставляет данные клиенту. Когда веб-сервис вызывается напрямую, он правильно сжимается. Однако при вызове через ASP.NET AJAX ответ JSON не сжимается.

Как мне заставить ASP.NET AJAX отправлять свой ответ JSON со сжатием GZip?

Ответы [ 3 ]

3 голосов
/ 29 октября 2008

Это должно работать из коробки. Чтобы убедиться, что мои ответы ASP.NET AJAX JSON используют сжатие GZip:

  1. Скачать Fiddler (версия 2.1.9 самое последнее)

  2. Включить Fiddler в IE 7: Инструменты -> Fiddler2

  3. Поскольку весь трафик направляется через прокси-сервер, вам нужно настроить Fiddler для применения accept-encoding: Gzip в заголовке HTTP. Правила -> Применить кодировку GZip

  4. Посетите ваш сайт через Fiddler. Если ваш сайт находится на локальном хосте, IE7 не будет маршрутизировать это через фиддлер. Fiddler 2.1.8 имеет удобную функцию, которая отображает localhost (127,0.0.1) на http://ipv4.fiddler и http://ipv6.fiddler

  5. Найдите запрос asmx в сеансах Fiddler.

Чтобы убедиться, что запрос был выполнен с использованием кодировки gzip, посмотрите заголовки запросов на верхней панели. Вы должны увидеть «Клиент: accept-encoding: gzip, deflate»

Чтобы убедиться, что ответ был отправлен в кодировке gzip, посмотрите заголовки ответа в нижней панели. Вы должны увидеть "Транспорт: Content-Encoding: gzip"

У меня установлен IIS 7 в Vista Business SP1 без дополнительной настройки, мой проект использует ASP.NET AJAX со стандартными веб-сервисами.

Надеюсь, это поможет!

1 голос
/ 29 октября 2008

Также убедитесь, что запрос JSON имеет, например, accept-encoding: gzip в заголовке HTTP.

1 голос
/ 29 октября 2008

Вы должны проверить, что расширение .asmx находится в списке типов файлов для сжатия, отсюда ajax json.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...