В настоящее время я использую собственный кодировщик gzip для своей службы WCF. Я хочу заменить его встроенным сжатием IIS 7, если это возможно. Я не могу найти в Интернете информацию о том, как это сделать.
Есть ли способ включить сжатие IIS 7 для служб WCF? Вы знаете, будет ли это поддерживаться "из коробки" в .Net 4?
Редактировать 15 июня: я все еще ищу способ заменить наш пользовательский кодировщик gzip обычным подходом, поэтому, если вы знаете, как это сделать с .Net 4 и IIS 7, ответьте этот вопрос.
Спасибо
Боковая панель: Моя попытка сделать это вручную
Поскольку я не могу найти, как это сделать, просто повернув несколько ручек, я решил попробовать включить его вручную.
Пока у меня есть:
- Установлен и включен модуль динамического сжатия IIS 7.
- Изменен раздел файла applicationHost.config, чтобы включить сжатие для
mimeType="application/soap+xml"
иmimeType="application/xop+xml"
.
Я использовал сниффер HTTP для прослушивания трафика, отправляемого из моего приложения (Windows Forms). Я вижу, что у запросов нет Accept-Encoding:gzip,deflate
http-заголовка.
So I
- Добавил вручную ко всем исходящим звонкам с использованием класса
OperationContextScope
и егоOutgoingMessageProperties
. (Подробности опубликую позже, если найду решение).
С помощью HTTP-сниффера я вижу, что заголовок клиента теперь имеет правильный заголовок:
POST /### path to my service ####/MyService.svc HTTP/1.1
MIME-Version: 1.0
Content-Type: multipart/related; type="application/xop+xml";
start="<http://tempuri.org/0>";
boundary="uuid:####### some uuid #############";
start-info="application/soap+xml"
Accept-Encoding: gzip,deflate
Host: ####### my server name #############
Content-Length: 1753
Expect: 100-continue
Но ответ сервера все еще не сжат.
Почему ответ сервера не сжимается? Я использовал правильные типы пантомимы? Как только я получу от сервера ответ в сжатом виде, будет ли клиент автоматически распаковывать его или ему придется писать код на стороне клиента для распаковки?
Спасибо за вашу помощь