我正在寻找一种方法来获取发送到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中的某些东西应该已经有了计数,我试图看看它是否已经计算好了。有可能得到它。
我想避免的是解决方案涉及获取所有数据,然后将其解析到某个点以找到到那一点的大小。到目前为止,我的大多数搜索都只提出了这些解决方案。
答案 0 :(得分:3)
使用dotPeek我发现HttpResponse有一个内部GetBufferedLength方法,用于计算跟踪控件的大小:
int bufferedLength1 = httpContext.Response.GetBufferedLength();
this.RenderControlInternal(writer, adapter);
int bufferedLength2 = httpContext.Response.GetBufferedLength();
这不太理想,但你可以通过反思来调用这个方法。