我有一个托管在IIS7.5上的.NET 3.5 Web服务。
我有一个连接到这个Web服务的客户端应用程序。
我已经更改了客户端应用程序中的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 头)。