![](/img/trans.png)
[英]Using compression with C# webservice client in Visual Studio 2010
[英]Webservice Client and Compression
我已经设法使用Gzip Compression设置II7。
我可以通过网络嗅探器检查我的asmx Web服务编码为Gzip,但是如何在C#Client上启用gzip压缩,我在应用程序中使用Web Service is Service参考。
实际上,我正在尝试发送大量数据,数组的1万个对象,因此压缩对bw影响很大。
但是如何在C#客户端上启用压缩。
我试图看到很多人看到相同的问题,但没有明确的答案,有人说使用第三方工具,或者有人说使用自定义标题等。
没有任何内置使用压缩Web服务的正确方法
正如@Igby Largeman指出的那样,您可以使用IIS7
在服务器上启用压缩,但这还不够。
主要思想是在客户端和服务器端设置标头:
客户 :
Accept-Encoding = "gzip, deflate";
您可以通过代码来实现:
var request = HttpWebRequest.Create("http://foofoo");
request.Headers["Accept"] = "application/json";
request.Headers["Accept-Encoding"] = "gzip, deflate";
要么
var request = HttpWebRequest.Create("http://foofoo");
request.AutomaticDecompression = DecompressionMethods.GZip |
DecompressionMethods.Deflate;
如果您使用一些WCF客户端,而不是HttpWebRequest
,则应使用自定义检查器和调度程序,如本文所述 :
因此,我使用了实现
IClientMessageInspector
和IDispatchMessageInspector
的消息检查器来自动设置AcceptEncoding
和ContentEncoding
http标头。这是完美的工作,但我无法通过首先检测
ContentEncoding
标头来在服务器上解压缩响应,因此我使用了变通方法来首先尝试对它进行解压缩,如果失败,则尝试尝试正常处理请求。我也在客户端管道中做到了这一点,这也行得通。
服务器 :
// This is the nearly same thing after all
Content-Encoding = "gzip" OR Content-Encoding = "deflate"
要在服务器端执行此操作,应在IIS中启用httpCompression。
我认为您应该查看原始文章才能完成这项工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.