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();
}
}
我與我們的服務器給人一種「400錯誤的請求」當我同樣的問題發送一個壓縮的請求。你有沒有找到這個解決方案? – ParvusM