c# - 确定每个控件在 ViewState 中存储了多少数据

标签 c# asp.net optimization .net-4.0 viewstate

<分区>

Possible Duplicate:
How to decode viewstate

我正在处理一个相当复杂的页面,其中包含许多用户控件、中继器等。

该页面上的 ViewState 已膨胀到超过 4MB,这导致回发时出现 “超出最大请求长度” 错误。临时解决方法是增加 HttpRuntime 中的 maxRequestLength 属性,但这并没有解决根本问题。

有人知道我如何检查/查询 ViewState 以查看哪些控件是最大的违规者吗?我想要尝试避免的是花大量时间优化一个控件,它只会给我节省几 kB,而页面上的其他控件可能会在 ViewState 中存储数百 kB

谢谢!

最佳答案

您可以使用:

  • Fiddler网络调试工具
  • 为特定页面启用跟踪:<%@ Page Language="c#" Trace="true"%>
  • 在 web.config 中为整个应用程序启用跟踪,这样每个页面都会在底部显示很多有用的跟踪信息
<configuration>
  <system.web>
    <trace enabled="true" pageOutput="false" localOnly="false"/>
  </system.web>
</configuration>

有用的跟踪指标(在您的情况下)是:

  • 渲染大小字节
  • ViewState 大小字节
  • ControlState 大小字节

关于c# - 确定每个控件在 ViewState 中存储了多少数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7754486/

相关文章:

c# - Xamarin.Forms 在文件系统中保存文件

c# - .NET 3 中的 System.Random 有多随机?

java - 从服务发送数据到远程套接字时出现问题

c# - session 状态失去值(value)

c - 如何优化这段代码?

python - 自定义积分损失项 Keras

C++ 和 QT4.5 - 传递一个 const int& 矫枉过正?通过引用传递对信号/插槽有帮助吗?

c# - 如何在 C# 中将数组放入结构中?

asp.net - 从任何请求输入绑定(bind) : FromQuery, FromRoute, FromForm

c# - 存储和更新外部 API 密码的最佳实践