簡體   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