Nó thực sự là khá dễ dàng để làm được điều này, ít nhất là với .NET 4.0 (tôi không thử nghiệm với 3.5). Những gì tôi làm là chỉ cho phép IIS 7 chăm sóc nó. Không cần tạo bộ lọc nén tùy chỉnh.
Trước tiên, hãy đảm bảo bạn đã cài đặt tính năng Nén động cho IIS 7. Sau đó, chọn máy chủ trong Trình quản lý IIS và sử dụng mô-đun nén để bật Nén động. Ngoài ra, bạn có thể thực hiện điều này từ dòng lệnh:
C:\windows\system32\inetsrv\appcmd set config -section:urlCompression /doDynamicCompression:true
Tiếp theo, chỉnh sửa tệp sau. Bạn có thể phải tạo một bản sao của nó thay vì chỉnh sửa trực tiếp cấu hình (Notepad ++ phàn nàn với tôi), sau đó ghi đè lên bản gốc khi bạn đã sẵn sàng.
C:\Windows\System32\Inetsrv\Config\applicationHost.config
Trong đó bạn sẽ tìm thấy một <dynamicTypes> phần dưới <httpCompression>. Dưới <dynamicTypes> bạn sẽ cần phải thêm tất cả các loại mime bạn muốn được nén khi khách hàng gửi tiêu đề gzip Accept-Encoding: gzip. Ví dụ:
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="application/xml" enabled="true" />
<add mimeType="application/json" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="*/*" enabled="false" />
</dynamicTypes>
Khi bạn đã làm xong, hãy tái chế hồ bơi ứng dụng và bạn nên làm tốt. Nếu điều đó không hiệu quả, hãy thử khởi động lại máy chủ của bạn và đảm bảo rằng tính năng nén động được bật ở cấp ứng dụng cũng như cấp độ máy chủ.
Lưu ý: Theo một số bài đăng tôi đã đọc, đã từng là lỗi mà bạn phải chỉ định mã hóa ký tự (ví dụ: "application/json; charset = utf-8"). Tuy nhiên, tôi không có bất kỳ vấn đề gì.
Xin cảm ơn, nhưng tiếc là giải pháp WS (SOAP) chứ không phải REST (webHttp). – PhilJ