3

我正在寻找一种方法来获取在 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 中的某些东西应该已经有了这个计数,我正在尝试看看是否有可能得到它。

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

4

1 回答 1

3

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

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

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

于 2012-05-23T20:29:33.417 回答