У нас есть служба WCF REST, размещенная на IIS 7 с .NET Framework 4.5. Клиент отправляет данные в сжатом формате GZip с заголовков запроса:Как обрабатывать сжатый запрос в службе WCF REST
Content-Encoding:gzip
Content-Type: application/xml
Но мы получаем плохой запрос от сервера, если запрос находится в сжатом формате. Мы включили сжатие запроса путем реализации IHttpModule, который будет фильтровать/изменять входящие запросы. По моему мнению, это происходит неудачно, потому что WCF использует исходную длину контента (сжатых данных) вместо декомпрессированных данных. Итак, вот мои вопросы:
Есть ли способ исправить проблемы с длиной содержимого в IIS7/.NET 4.5? Моя реализация модуля HTTP приведен ниже:
httpApplication.Request.Filter = New GZipStream(httpApplication.Request.Filter, CompressionMode.Decompress)`
Если фиксируя вопрос длины содержание не представляется возможным на стороне сервера, есть ли способ, я могу отправить оригинальную длину содержимого от клиента с помощью сжатого запроса? Реализация на стороне клиента выглядит следующим образом:
using (Stream requeststream = serviceRequest.GetRequestStream())
{
if (useCompression)
{
using (GZipStream zipStream = new GZipStream(requeststream, CompressionMode.Compress))
{
zipStream.Write(bytes, 0, bytes.Length);
zipStream.Close();
requeststream.Close();
}
serviceRequest.Headers.Add("Content-Encoding", "gzip");
}
else
{
requeststream.Write(bytes, 0, bytes.Length);
requeststream.Close();
}
}
У меня такая же проблема с нашим сервером давая «400 плохой запрос», когда я отправьте сжатый запрос. Вы когда-нибудь находили решение для этого? – ParvusM