Сжатие GZip в веб-службе WCF

У меня есть веб-сервис.NET 3.5, размещенный на IIS7.5.

У меня есть клиентское приложение, которое подключается к этому веб-сервису.

Я изменил (в клиентском приложении)метод httpWebRequest.Create, чтобы добавить автоматическую декомпрессию для 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 (Я вижу это из Fiddler), но возникает исключение:

Response is not wellformed XML

(Я думаю, что клиент не расшифровывает ответ)

Если я уберу эту строку, как в документации MSDN

httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");

Ответ не закодирован GZip (и в запросе нет заголовка ACCEPT-ENCODING)

9
задан AndreaCi 12 April 2012 в 15:14
поделиться