2013-10-07 33 views
3

我們有一個WCF REST服務,託管在IIS 7和.NET Framework 4.5上。該客戶端在gzip壓縮格式請求頭髮送的數據:如何處理WCF REST服務中的壓縮請求

Content-Encoding:gzip 
Content-Type: application/xml 

但是我們從服務器獲取錯誤的請求,如果該請求是壓縮格式。我們通過實施IHttpModule啓用了請求壓縮,它將過濾/修改傳入的請求。根據我的理解,這是失敗的,因爲WCF使用原始內容長度(壓縮數據)而不是解壓縮數據。所以這裏是我的問題:

有什麼辦法可以解決IIS7/.NET 4.5中的這個內容長度問題?我下面的HTTP模塊實現給定:

httpApplication.Request.Filter = New GZipStream(httpApplication.Request.Filter, CompressionMode.Decompress)` 

如果固定內容長度的問題是不可能在服務器端,有什麼辦法,我可以從發送端原始內容長度與壓縮的要求嗎?客戶端實現如下:

using (Stream requeststream = serviceRequest.GetRequestStream()) 
{ 
    if (useCompression) 
    { 
     using (GZipStream zipStream = new GZipStream(requeststream, CompressionMode.Compress)) 
     { 
      zipStream.Write(bytes, 0, bytes.Length); 
      zipStream.Close(); 
      requeststream.Close(); 
     } 

     serviceRequest.Headers.Add("Content-Encoding", "gzip"); 
    } 
    else 
    { 
     requeststream.Write(bytes, 0, bytes.Length); 
     requeststream.Close(); 
    } 
} 
+0

我與我們的服務器給人一種「400錯誤的請求」當我同樣的問題發送一個壓縮的請求。你有沒有找到這個解決方案? – ParvusM

回答