gzip HttpWebRequest - PullRequest
       8

gzip HttpWebRequest

3 голосов
/ 13 января 2010

Я отправляю HTTP POST-запросы через HttpWebRequest, которые содержат большое количество контента. Я хотел бы gzip содержание сообщения. Это возможно?

Нужно ли настроить IIS 7 для обработки сжатого содержимого? Он уже настроен для обслуживания сжатых ответов.

Я попытался добавить заголовок Content-Encoding = gzip и записать в поток запроса, обернутый в GZipStream, но сервер возвращает 504 (GatewayTimeout), что кажется странным.

Ответы [ 2 ]

4 голосов
/ 13 января 2010

Я не верю, что IIS7 поддерживает запросы GZIP из коробки. Вот почему На моем компьютере с IIS7 gzip.dll не экспортирует методы распаковки.

c:\Windows\System32\inetsrv>c:\vc9\bin\dumpbin.exe  -exports gzip.dll
Microsoft (R) COFF/PE Dumper Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file gzip.dll

File Type: DLL

  Section contains the following exports for gzip.dll

    00000000 characteristics
    47919400 time date stamp Sat Jan 19 01:09:04 2008
        0.00 version
           1 ordinal base
           6 number of functions
           6 number of names

    ordinal hint RVA      name

          1    0 0000242D Compress
          2    1 00002E13 CreateCompression
          3    2 000065AE DeInitCompression
          4    3 000012EE DestroyCompression
          5    4 0000658D InitCompression
          6    5 000065B6 ResetCompression

  Summary

        1000 .data
        1000 .reloc
        1000 .rsrc
        6000 .text

Я думаю, что это представляет собой изменение в gzip.dll. Я полагаю, что в предыдущих версиях gzip.dll было 12 экспортированных методов, в том числе 6 для декомпрессии.

1 голос
/ 13 января 2010

Подавляющее большинство веб-серверов не поддерживают сжатые тела запросов. mod_deflate может быть настроен для поддержки его на Apache, но на самом деле это редко происходит (поскольку zip-бомба является легкой потенциальной DoS-атакой) Я не знаю о решении IIS.

Если вы обращаетесь к своему собственному серверу, то, конечно, ничто не помешает вам выполнить сжатие на уровне приложения. Если вам нужно передать стандартный тип формы для чтения бэкэндом, вы должны выбрать multipart/form-data, так как URL-кодирование приведет к увеличению двоичных данных параметра сжатого содержимого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...