Firefox问题:此页面的状态信息无效,可能已损坏

本文关键字:无效 信息 已损坏 状态 问题 Firefox | 更新日期: 2023-09-27 18:02:46

我注意到在我使用updatePanel的页面上,我在ctrl+r或按F5后得到一个错误。当我尝试异步回发时,会出现以下消息:

the state information is invalid for this page and might be corrupted

我读了Response.Cache.SetNoStore();但是在我的实例ff 3中,它实际上不起作用。

还有其他解决方案吗?用户ASP。Net 2.0

感谢您的帮助

Firefox问题:此页面的状态信息无效,可能已损坏

当您在EventValidation字段呈现之前回发时,这个问题会特别发生。如果EventValidation是启用的(默认情况下),但是ASP。. NET在回发时无法看到隐藏字段,也会得到异常。如果你在表单完全呈现之前提交了它,那么很有可能EventValidation字段还没有呈现,因此ASP.net无法验证你的点击。

一种解决方法当然是禁用事件验证,但你必须意识到安全问题。

一般来说,不建议禁用EventValidation。引用MS文档

"强烈建议不要禁用事件验证。在禁用事件验证之前,您应该确保不会构造会对应用程序产生意外影响的回发。

http://msdn2.microsoft.com/en-us/library/system.web.ui.page.enableeventvalidation.aspx

还有一篇详细的文章,讨论了禁用事件验证的几个优点和缺点。

http://odetocode.com/Blogs/scott/archive/2006/03/21/3153.aspx。这个链接确实有一些开发者在谈论你正在经历的相同类型的错误

当您使用ajax将一些内容/控件加载到包含div(假设div位于body的form元素中)时,可能会发生这种情况。记住,当你使用web表单时,它们都得到了<body><form id="ctrlsomething">stuff</form></body>格式……当你做回发时,表单被提交,内容控件/元素不匹配原始的(记住你添加的东西)…因此出现了错误。

解决这个问题的一种方法是通过javascript/jquery在 开头添加元素。
$('body').append("<div id='myframe_that_ajax_will_fill_with_stuff'></div>");

这将在</form>之后在体内添加<div id='myframe_that_ajax_will_fill_with_stuff'></div>,所以你会没事的

其他选项是在页面级别禁用eventvalidation/viewstate,但这会导致安全漏洞