Tengo un servicio web .NET 3.5 alojado en IIS7.5.Compresión GZip en WCF WebService
Tengo una aplicación cliente que se conecta a este servicio web.
que cambiar (en la aplicación cliente) el método httpWebRequest.Create añadir automaticDecompression para GZip pero no está funcionando
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;
}
De este modo, la solicitud se envía correctamente, la respuesta está codificada en gzip (lo veo desde Fiddler), pero se produce una excepción:
Response is not wellformed XML
(creo que el cliente no decodifica la respuesta)
Si quito esta fila, como en documentación de MSDN
httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
La respuesta no está codificado GZip (y en la solicitud no hay Accept-Encoding)
El IIS debe tener la posibilidad de añadir soporte de compresión para cualquier servicio alojado. No hay forma de implementar la compresión GZip a través de una codificación personalizada. –
Yeh ... ok ... ¿y cómo puedo usar la compresión GZip en los servicios web de WCF? Debido a que tengo que transferir una gran cantidad de datos de texto ... – AndreaCi
Pasé por todo este doloroso proceso hace unos 2-3 años. He intentado encontrar la solución que encontré, pero hasta ahora no tuve suerte. +1 mientras tanto. – leppie