如何获取 HttpResponse 大小

本文关键字:HttpResponse 大小 获取 何获取 | 更新日期: 2023-09-27 18:34:18

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

页.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 内部的某些东西应该已经有计数,我正在尝试查看是否有可能获得它。

我想避免的是涉及获取所有数据然后将其解析到某个点以找到该点的大小的解决方案。到目前为止,我的大部分搜索都只找到了这些解决方案。

如何获取 HttpResponse 大小

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

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

这并不理想,但您可以通过反射调用此方法。