WCF WebService中的GZip压缩

And*_*aCi 9 c# wcf gzip web-services

我在IIS7.5上有一个.NET 3.5 Webservice.

我有一个连接到此Web服务的客户端应用程序.

我更改了(在客户端应用程序中)httpWebRequest.Create方法为GZip添加automaticDecompression但是它不起作用

 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;
    }
Run Code Online (Sandbox Code Playgroud)

通过这种方式正确发送请求,答案以gzip编码(我从Fiddler看到),但发生异常:

Response is not wellformed XML
Run Code Online (Sandbox Code Playgroud)

(我认为客户端没有解码答案)

如果我删除此行,如在MSDN文档中

httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
Run Code Online (Sandbox Code Playgroud)

答案不是GZip编码(在请求中没有ACCEPT-ENCODING标头)

And*_*aCi 0

解决了!!问题中的代码足以供服务参考。如果您使用的是 Web 引用,还请添加行

my_service_object.EnableDecompression = true;
Run Code Online (Sandbox Code Playgroud)