2010-01-13 8 views
3

많은 양의 콘텐츠가 포함 된 HTTP POST 요청을 HttpWebRequest를 통해 제출하고 있습니다. 나는 메시지 내용을 gzip하고 싶다. 이것이 가능한가?gzip HttpWebRequest

압축 된 내용을 처리하도록 IIS 7을 구성해야합니까? 압축 된 응답을 제공하도록 이미 구성되었습니다.

Content-Encoding = gzip 헤더를 추가하고 GZipStream에 래핑 된 요청 스트림에 쓰기를 시도했지만 서버가 이상하게 보이는 504 (GatewayTimeout)을 반환합니다.

답변

1

대다수의 웹 서버는 압축 된 요청 본문을 지원하지 않습니다. mod_deflate은 Apache에서 지원하도록 구성 할 수 있지만 실제로는 (지프 폭탄이 DoS 공격의 가능성이 있기 때문에) 거의 사용하지 않습니다. 나는 IIS 솔루션에 대해 알지 못한다.

자신의 서버로 돌아가는 중이라면 물론 응용 프로그램 수준에서 압축 작업을 중단하는 것도 없습니다. 백엔드가 읽을 수있는 표준 양식 유형을 전달해야한다면 URL 인코딩이 압축 된 컨텐츠 매개 변수의 2 진 데이터를 부 풀리게되므로 multipart/form-data을 선택해야합니다.

4

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을 믿었으며, 압축을 풀었던 6 개를 포함하여 12 개의 익스포트 된 메소드가있었습니다.