繁体   English   中英

Web服务客户端和压缩

[英]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 ,则应使用自定义检查器和调度程序,如本文所述

因此,我使用了实现IClientMessageInspectorIDispatchMessageInspector的消息检查器来自动设置AcceptEncodingContentEncoding 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM