我有一个页面非常庞大(> 300KB)。 ...是的,我知道。我已将此异常缩小到一个用户控件,但我无法确定控件的确切位置。
我已经覆盖了页面中的SavePageStateToPersistenceMedium,但是使用传入的viewstate对象并不是很好。我可以将它传递给某些递归函数,该函数会打印出对象中的所有内容吗?
我尝试使用免费提供的viewstate解码器,但没有一个有效。尝试反序列化视图状态时,我总是会遇到错误。
我几乎在这里寻找代码片段。
谢谢,
标记
感谢您的追踪建议,尤其是trace.axd的事情。但这仍然只告诉我控件有多大,它并没有告诉我在视图状态中有什么。我希望能够看到是否存在我错误地序列化为viewstate的对象。
答案 0 :(得分:1)
我曾经使用过trace.axd。它列出了每个请求并转储了viewstate的内容。您必须在web.config中启用跟踪。如果您有很多请求,则需要将缓存大小更新为10以上。
答案 1 :(得分:1)
Fritz Onion's ViewState Decoder就是你所需要的!
答案 2 :(得分:0)
关于viewstate解码器的问题,您可能会对viewstate进行加密。查看此帖子上的评论/链接:http://www.testingreflections.com/node/view/3424。
更新:尝试在web.config中的pages元素上完全关闭它:
<pages ... viewStateEncryptionMode="Never" ... />
查看此msdn doc How To: Configure MachineKey in ASP.NET 2.0
中的视图状态部分答案 3 :(得分:0)
我只想将Trace =“true”添加到本地计算机上的page指令中。控制树部分将显示每个控件的视图状态大小。