У меня есть .NET 3.5 Webservice, размещенный на IIS7.5.Сжатие GZip в WCF WebService
У меня есть клиентское приложение, которое подключается к этому веб-сервису.
Я изменил (в клиентском приложении) метода httpWebRequest.Create добавить automaticDecompression для GZip, но он не работает
WebRequest IWebRequestCreate.Create(Uri uri)
{
HttpWebRequest httpWebRequest =
Activator.CreateInstance(
typeof(HttpWebRequest),
BindingFlags.CreateInstance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
null,
new object[] { uri, null },
null) as HttpWebRequest;
if (httpWebRequest == null)
return null;
httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
return httpWebRequest;
}
Таким образом, запрос отправляется правильно, ответ кодируется в Gzip (Я вижу его из Скрипачей), но возникает исключение:
Response is not wellformed XML
(я думаю, что клиент не декодирует ответ)
Если удалить эту строку, как и в MSDN документация
httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
Ответ не GZip закодирован (и в запросе там нет Accept-Encoding заголовок)
МПМ должны иметь возможность добавить поддержку сжатия в любой размещенной службе. Невозможно реализовать сжатие GZip через настраиваемое кодирование. –
Yeh .. ok .. и как я могу использовать сжатие GZip в веб-сервисах WCF? Потому что мне нужно передать много текстовых данных. – AndreaCi
Я прошел через весь этот болезненный процесс около 2-3 лет назад. Я пытался найти решение, которое я нашел, но пока не повезло. +1 тем временем. – leppie