其他分享
首页 > 其他分享> > CodeGo.net>如何获得HttpResponse大小

CodeGo.net>如何获得HttpResponse大小

作者:互联网

我正在寻找一种方法来获取发送到ASP.NET 2.0响应中特定点的字节数,以便可以将此数字写入响应中.就像是:

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中的某些内容应该已经有了计数,我正在尝试查看是否有可能获得计数.

我要避免的解决方案是获取所有数据,然后将其解析到某个点以找到达到该点的大小.到目前为止,我的大部分搜索都只提供了这类解决方案.

解决方法:

使用dotPeek我发现HttpResponse有一个内部GetBufferedLength方法,该方法用于计算跟踪的控件的大小:

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

这不是理想的方法,但是您可以通过反射调用此方法.

标签:asp-net-2-0,httpresponse,c
来源: https://codeday.me/bug/20191201/2079918.html