Как отметил @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
, вам следует использовать специальный инспектор и диспетчер, как в этой статье :
Поэтому я использовал инспектор сообщений, реализующий IClientMessageInspector
и IDispatchMessageInspector
для автоматической установки заголовков AcceptEncoding
и ContentEncoding
http.
Это работало отлично, но я не смог добиться распаковки ответа на сервере, сначала обнаружив заголовок ContentEncoding
, таким образом, я использовал обходной путь, чтобы сначала попытаться распаковать его, а если это не удалось, просто попытаться обработать запрос как нормальный.
Я также сделал это в клиентском конвейере, и это тоже работает.
Сервер
// This is the nearly same thing after all
Content-Encoding = "gzip" OR Content-Encoding = "deflate"
Чтобы сделать это на стороне сервера, вы должны включить httpCompression в IIS.
Я думаю, что вы должны проверить оригинальную статью , чтобы получить эту работу