2010-12-10 5 views
8

ASP.NET 4.0/IIS7 웹 응용 프로그램의 경우 압축 된 HTTP 요청을 지원하고 싶습니다. 기본적으로 요청 헤더에 Content-Encoding: gzip을 추가하고 그에 따라 본문을 압축하는 클라이언트를 지원하고 싶습니다.Asp.Net 4.0/IIS7에서 압축 된 HTTP 요청을 지원하는 방법은 무엇입니까?

이러한 동작을 어떻게 달성했는지 아는 사람이 있습니까?

시 : 직결 나는 여러 엔드 포인트 REST와 SOAP을 가지고 있고, 그것은 HTTP 수준에서가 아니라 각 엔드 포인트에 대한 사용자 정의 인코더보다 압축을 지원하기 위해 더 나은 솔루션을 느낀다.

답변

5

관심있는 사람들에게 들어오는 요청을 단순히 필터링하는 IHttpModule을 사용하면 구현이 단순합니다.

public class GZipDecompressModule : IHttpModule 
{ 
    public void Init(HttpApplication context) 
    { 
     context.BeginRequest += BeginRequest; 
    } 

    void BeginRequest(object sender, EventArgs e) 
    { 
     var app = (HttpApplication)sender; 

     if ("gzip" == app.Request.Headers["Content-Encoding"]) 
     { 
      app.Request.Filter = new GZipStream(
       app.Request.Filter, CompressionMode.Decompress); 
     } 
    } 

    public void Dispose() 
    { 
    } 
} 

업데이트 : 그것은 WCF는 압축 해제 후 얻은 원래 Content-Length 아닌 값에 의존으로이 방법은 WCF에서이 문제를 트리거 것으로 보인다.

+0

저는 호스팅 된 응용 프로그램 대신 IIS 수준에서 압축을 구성 할 수 있다는 인상하에있었습니다. 그러나 나는, – e36M3

+2

고전 HTTP 압축 내가 압축하려고 ** **, 여기에이 ** 요청입니다 ** 응답에만 적용 단지 제안 구글 "IIS 압축을"그것에 대해 잘 모른다. –

+0

여기에 새로운 소식이 있습니까? – ver