Tôi có một .NET 3.5 Webservice được lưu trữ trên IIS7.5.Nén GZip trong WCF WebService
Tôi có ứng dụng khách kết nối với dịch vụ web này.
tôi đã thay đổi (trong ứng dụng client) phương pháp httpWebRequest.Create thêm automaticDecompression cho GZip nhưng nó không làm việc
WebRequest IWebRequestCreate.Create(Uri uri)
{
HttpWebRequest httpWebRequest =
Activator.CreateInstance(
typeof(HttpWebRequest),
BindingFlags.CreateInstance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
null,
new object[] { uri, null },
null) as HttpWebRequest;
if (httpWebRequest == null)
return null;
httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
return httpWebRequest;
}
Bằng cách này yêu cầu được gửi một cách chính xác, câu trả lời được mã hóa trong gzip (tôi nhìn thấy nó từ Fiddler), nhưng một ngoại lệ xảy ra:
Response is not wellformed XML
(tôi nghĩ rằng khách hàng không giải mã các câu trả lời)
Nếu tôi loại bỏ hàng này, như trong tài liệu MSDN
httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
Câu trả lời là không GZip mã hóa (và trong yêu cầu rằng không có bất Accept-Encoding header)
IIS sẽ có khả năng thêm hỗ trợ nén vào bất kỳ dịch vụ được lưu trữ nào. Không có cách nào để thực hiện nén GZip thông qua mã hóa tùy chỉnh. –
Yeh .. ok .. và Làm cách nào để sử dụng tính năng nén GZip trong các dịch vụ web của WCF? Bởi vì tôi phải chuyển rất nhiều dữ liệu văn bản .. – AndreaCi
Tôi đã đi qua toàn bộ quá trình này đau đớn khoảng 2-3 năm trở lại. Đã cố gắng tìm ra giải pháp mà tôi đã tìm thấy, nhưng không có may mắn cho đến nay. 1 trong khi đó. – leppie