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标头)
解决了!!问题中的代码足以供服务参考。如果您使用的是 Web 引用,还请添加行
my_service_object.EnableDecompression = true;
Run Code Online (Sandbox Code Playgroud)