.net Viewstate隐藏字段太大,以至于所有内容都崩溃

.net Viewstate隐藏字段太大,以至于所有内容都崩溃,.net,asp.net,viewstate,chunking,.net,Asp.net,Viewstate,Chunking,由于某种原因,我的应用程序的viewstate变得巨大(大约1400万个字符)。它增加了大约1分钟的加载时间。如果页面最终加载(这并不常见),则每次有人发送表单时服务器都会崩溃,因为“帖子大小超出了允许的限制。” 它突然出现了。我没有添加任何字段,只是在页面上添加了一些javascript 人们让我检查viewstate分块。谷歌让我这么做: <pages maxPageStateFieldLength="1024"> 。。。所以现在我没有了一个巨大的隐藏场,而是有了大约100

由于某种原因,我的应用程序的viewstate变得巨大(大约1400万个字符)。它增加了大约1分钟的加载时间。如果页面最终加载(这并不常见),则每次有人发送表单时服务器都会崩溃,因为“
帖子大小超出了允许的限制。

它突然出现了。我没有添加任何字段,只是在页面上添加了一些javascript

人们让我检查viewstate分块。谷歌让我这么做:

<pages maxPageStateFieldLength="1024">

。。。所以现在我没有了一个巨大的隐藏场,而是有了大约100个非常大的隐藏场。这不是我想要的


为什么.NET会这样做?我怎样才能解决这个问题

请记住,控件将在没有viewstate的情况下跨回发保留其值。您通常可以在没有任何问题的情况下禁用许多控件的viewstate。要禁用特定控件集的viewstate,请执行以下操作:

EnableViewState="false"

如果为所有网格和任何不需要viewsate的控件设置此选项,则会显著减小其大小。

我建议使用一个实用程序来解码viewstate,以便您了解其中的实际内容(因为您显然有很多您似乎不需要的信息)


A将允许您查看viewstate中您不希望看到的内容。然后,您可以修改代码,删除有问题的控件,或者对不应该启用viewstate的控件选择性地禁用viewstate(使用
EnableViewState=“false”
属性)。

有没有可能对一些控件关闭viewstate?如果不查看页面,很难说,但请尝试使用viewstate解码器查看viewstate中嵌入的内容。如果不需要网格/表的viewstate,还应该关闭它们,除了在IIS上打开gzip之外,还可以实现一个压缩的viewstate。这些控件是输入字段,无法关闭这些控件的viewstate,即使是这样,也需要我重新编写大量代码。还有10个字段,应该没那么糟糕。。。对吗?@mikael:如何关闭网格/表格的视图状态?我只有输入字段,是否有可能.net决定其他字段需要处于viewstate中?您在输入上使用viewstate的目的是什么?如果您只需要它们在回发中记住它们的值,那么在没有viewstate的情况下就可以了。我包括这样的.ascx文件:其中有很多JS。是否可以链接?我为这些禁用了viewstate,但它没有修复它。我找到了它(请参阅接受的答案)!我接受了贝斯卡的答案,因为这是帮助我解决问题的答案,但你的答案也很有帮助。。。所以+1,非常感谢:)!这很烦人,软件崩溃了,显然字符串太大了。但现在我知道我的viewstate有13 428 604个字符长:)它终于在我第五次尝试时运行而没有崩溃:)它看起来好像把我所有的页面都放在viewstate中了。。。这很奇怪。我会试着看看这里的逻辑是什么,然后回到我发现的SOOk。我接受你的回答,因为你是引导我走向正确方向的人。。。甚至认为克里斯的回答也帮了我很多。问题是这个页面是一个搜索页面。。。出于某种原因,它包含viewstate中的所有结果,即使没有进行搜索。我用viewstate解码器看到了这一点。然后修复它很简单,我在保留搜索结果的.ascx上添加了EnableViewState=“false”,并修复了它。耶@Margg这正是我关闭viewstate的原因:)很高兴你找到了答案。