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

时间:2011-07-20 05:54:36

标签: c# .net asp.net

我注意到在我使用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

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

特别是在呈现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。这个链接确实有一些开发人员正在谈论你遇到的samE类型的错误。

答案 1 :(得分:0)

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

克服这个问题的一种方法是在开始时通过javascript / jquery添加元素

$('body').append("<div id='myframe_that_ajax_will_fill_with_stuff'></div>");

这会在<div id='myframe_that_ajax_will_fill_with_stuff'></div>之后在正文中添加</form>,所以你可以很好

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