В настоящее время я использую пользовательский кодировщик 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.
Итак, я
- Добавил его вручную ко всем исходящим вызовам, используя класс
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
Но ответ сервера все еще не сжат.
Почему ответ сервера не сжимается? Я использовал правильные типы пантомимы? Как только я получу сервер для возврата сжатого ответа, будет ли клиент автоматически распаковывать его или ему придется писать код на стороне клиента для распаковки?
Спасибо за вашу помощь