C# httpWebRequest.AutomaticDecompression未设置;接受“u编码:gzip”;标题

C# httpWebRequest.AutomaticDecompression未设置;接受“u编码:gzip”;标题,c#,.net,web-services,httpwebrequest,C#,.net,Web Services,Httpwebrequest,我正在我的.NET3.0应用程序中使用一个web服务引用,我正在尝试设置gzip解码 当我使用SoapUI时,响应用gzip压缩,因为在请求中设置了头“Accept Encoding:gzip,deflate”。当我的.net请求被发送时,它没有这个头,因此服务器没有压缩响应 我发现这正是我想要做的。我实现了代码,并用调试器验证了它在每个请求上都被执行,但它仍然没有添加“Accept Encoding:gzip”头 接下来,我通过链接在类中手动添加了头 httpWebRequest.Header

我正在我的.NET3.0应用程序中使用一个web服务引用,我正在尝试设置gzip解码

当我使用SoapUI时,响应用gzip压缩,因为在请求中设置了头“Accept Encoding:gzip,deflate”。当我的.net请求被发送时,它没有这个头,因此服务器没有压缩响应

我发现这正是我想要做的。我实现了代码,并用调试器验证了它在每个请求上都被执行,但它仍然没有添加“Accept Encoding:gzip”头

接下来,我通过链接在类中手动添加了头

httpWebRequest.Headers.Add("Accept-Encoding", "gzip");
httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip;;
最后,我收到了来自服务器的压缩响应!但是没有,现在我得到了一个格式错误的xml异常,我很确定这是因为响应没有被解压缩,即使下面是使用链接中的类设置的

httpWebRequest.Headers.Add("Accept-Encoding", "gzip");
httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip;;

我不明白出了什么问题

好的,我想出了解决问题的办法

由于我使用的是web引用,您必须在web引用对象上设置
enabledescupression=true

所以解决办法是这样的

var client = new ReferredService
{
    EnableDecompression = true
}

其中referedService是web引用名称。

.AutomaticDecompression=DecompressionMethods.GZip
添加
“接受编码”
标题,设置您自己可能会干扰自动压缩。您还应该使用
(HttpWebRequest)WebRequest.Create()
,查看您链接到的页面中使用的丑陋反射。因为我使用的是web引用,所以我只是在引用的api中调用方法,而不是显式创建WebRequest。这些创建是由.net以某种方式处理的,这就是我使用此反射代码的原因。如果我没有为“Accept Encoding”添加标头,则即使在我设置时,请求也没有该标头。AutomaticDecompression=DecompressionMethods.GZip;我看到这个问题是因为我在使用网络参考吗?