2012-05-16 6 views
3

응답에이 숫자를 쓸 수 있도록 ASP.NET 2.0 응답의 특정 지점까지 보낸 바이트 수를 얻는 방법을 찾고 있습니다.HttpResponse 크기를 얻는 방법

Page.aspx : 같은 뭔가

<script runat="server"> 
    private string GetResponseSize() 
    { 
     int nCurrentResponseSize = ...; // what goes here? 
     return (nCurrentResponseSize.ToString()); 
    } 
</script> 
<html> 
    <head runat="server"><title>test</title></head> 
    <body> 
    <div>Size 1: <%= GetResponseSize() %></div> 
    <br /> 
    <div>Size 2: <%= GetResponseSize() %></div> 
    </body> 
</html> 

문제는 HttpResponse.OutputStream.Length이 (NetworkStream를 지원하지 않는)가 지원되지 않는 것입니다.

HtmlTextWriter을 구현하여 페이지의 기본 바이트 및 계산 바이트를 무시할 수 있지만 ASP.NET 내부에 이미 개수가 있어야하며 가져올 수 있는지 확인하려고합니다.

내가 피하고 싶은 것은 모든 데이터를 가져 와서 특정 지점까지 파싱하여 그 지점까지 크기를 찾는 것입니다. 지금까지 대부분의 검색 결과에서 이러한 종류의 솔루션 만 나타났습니다.

답변

3

는 dotPeek 사용 나는 HttpResponse에 추적을위한 컨트롤의 크기를 계산하는 데 사용되는 내부 GetBufferedLength 방법이 발견 : 그것은 이상적인 아니에요

int bufferedLength1 = httpContext.Response.GetBufferedLength(); 
this.RenderControlInternal(writer, adapter); 
int bufferedLength2 = httpContext.Response.GetBufferedLength(); 

을,하지만 당신은 반사를 통해이 메소드를 호출 할 수 있습니다.

+0

응답 해 주셔서 감사합니다. 불행히도 리플렉션은 실제로 옵션이 아닙니다. 어쨌든 내가 그걸로 뭔가를 배울 수 있는지 확인해 보겠습니다. 문자 수나 바이트 수를 유지하는지 궁금합니다. – xxbbcc

+0

1) 왜 이걸 필요로하는지 물어봐도 될까요? –

+0

2) 리플렉션은 순수하게 액세스의 맥락에서 느리지 만 파일 또는 데이터베이스에 액세스하는 데이터 기반 웹 사이트의 전체 컨텍스트에서 우리는 전체 페이지 처리 시간 중 아주 작은 부분을 말하고있을 것입니다. –