![](/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.