как запрограммировать IIS 6 и 7 на GZIP трафик, генерируемый размещенной в нем службой WCF? - PullRequest
0 голосов
/ 21 июня 2011

Я знаю теорию:

  1. Активировать динамическое сжатие контента
  2. Указывает, что файлы с расширением .svc должны быть сжаты.

Но как мне выразить эти требования программно? Мне нужно написать утилиту, которая будет работать как на IIS6, так и на IIS7 (также могут быть полезны две отдельные утилиты).

Спасибо.

EDIT

Я использую .NET 4

1 Ответ

1 голос
/ 21 июня 2011

Проверьте эту запись в блоге:

http://omaralzabir.com/wcf-does-not-support-compression-out-of-the-box-so-fix-it/

Служба WCF и клиент не поддерживают сжатие HTTP из коробки в .NET 3.5, даже если вы включаете динамическийСжатие в IIS 6 или 7. Это было исправлено в .NET 4, но тем, кто застрял в .NET 3.5 в обозримом будущем, вам не повезло.Во-первых, это ошибка IIS в том, что он не включает сжатие http для сообщений SOAP, даже если вы включаете динамическое сжатие в IIS 7. Во-вторых, это ошибка WCF, что он не отправляет Accept-Encoding: gzip, deflate header в запросах httpна сервер, который сообщает IIS, что клиент поддерживает сжатие.В-третьих, это опять ошибка WCF, что даже если вы заставите IIS отправить сжатый ответ, WCF не сможет его обработать, поскольку он не знает, как его распаковать.Итак, вам нужно настроить фабрики IIS и System.Net, чтобы заставить сжатие работать для служб WCF.Сжатие является ключевым фактором для производительности, поскольку оно может значительно сократить передачу данных с сервера на клиент и, таким образом, значительно повысить производительность, если вы обмениваетесь данными среднего и большого размера по глобальной сети или через Интернет.

Существует два шага - сначала настроить IIS, затем настройте System.Net.Нет необходимости настраивать что-либо в WCF, например использовать перехватчик сообщений для вставки заголовков HTTP

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