我有一个具有非常大的视图状态(> 300KB)的页面。...是的,我知道。我已将此异常范围缩小到一个用户控件,但在确定该控件到底放在那里的内容时遇到了麻烦。
我已经在页面中覆盖了 SavePageStateToPersistenceMedium,但不擅长处理传入的 viewstate 对象。我可以将它传递给一些递归函数来打印出对象中的所有内容吗?
我试过使用免费提供的视图状态解码器,但没有一个奏效。当它试图反序列化视图状态时,我总是会出错。
我非常想在这里寻找代码片段。
谢谢,
马克
感谢您的跟踪建议,尤其是。trace.axd 的东西。但这仍然只告诉我控件有多大,并没有告诉我视图状态中有什么。我希望能够查看是否存在我错误地序列化为视图状态的对象。
MStodd
问问题
1743 次
4 回答
1
我曾经使用过trace.axd。它列出每个请求并转储视图状态的内容。您必须在 web.config 中启用跟踪。如果您有很多请求,您需要将缓存大小更新为 10 以上。
于 2009-03-20T20:31:53.153 回答
1
Fritz Onion 的 ViewState 解码器正是您所需要的!
于 2009-03-23T22:31:13.463 回答
0
关于视图状态解码器的问题,您可能已经加密了视图状态。检查这篇文章的评论/链接:http ://www.testingreflections.com/node/view/3424 。
更新:尝试在 web.config 中的 pages 元素上完全关闭它:
<pages ... viewStateEncryptionMode="Never" ... />
查看此 msdn 文档中的视图状态部分如何:在 ASP.NET 2.0 中配置 MachineKey
于 2009-03-20T20:45:48.703 回答
0
I would just add Trace="true" to the page directive on your local machine. The control tree section will show you the viewstate size of each control.
于 2009-03-20T21:03:22.920 回答