【发布时间】:2010-10-06 19:52:54
【问题描述】:
我有一个页面,其中包含一些用于查询数据库并显示结果的搜索字段。视图状态需要保留下拉列表中的项目列表。
在 Firefox (3) 和 Chrome 中一切正常,但在 Internet Explorer 中失败,但仅在某些时候(某些操作,例如重置表单,实际上只是使用一些查询字符串参数执行 response.redirect)... 什么发生在 Viewstate 被转储到 URL 上,并抛出错误页面。
以前有人遇到过这种情况吗?也许一些关于什么可能导致在 IE 中发生这种情况的指针?
谢谢大家,
格雷格
更新:
经过进一步调查,我确定实际错误是这样的:
“viewstate MAC 验证失败。如果此应用程序由 Web Farm 或集群托管,请确保配置指定相同的 validationKey 和验证算法。不能在集群中使用 AutoGenerate。”
更多信息可能会有所帮助:这是由托管在内容管理系统 (Umbraco) 中的用户控件引起的,这可能与将视图状态传递给页面的原因有关(作为控件包含在 CMS 的更大页面中)。我将对此进行进一步调查,但任何其他建议将不胜感激。
干杯 格雷格
更新 2:
谁能说明为什么这只发生在 IE(而不是 FF 或 Chrome)中?如果其他浏览器可以很好地处理它,这似乎不太可能是控件更改或机器键或我在该地方阅读的其他建议的问题。
任何想法 IE 的不同之处可能导致此失败?
解决方案:
原来这是一个非常愚蠢的问题——我在 CMS 中使用了错误的主模板,因此有 2 个表单标签。去掉多余的form标签,问题解决!
非常感谢 Bendewey 帮我解决了这个问题(请参阅 Bendewey 帖子中的 cmets)。
这是我生命中的 4 个小时,我很想回来……但很高兴我现在可以继续前进。再次感谢 Stack Overflow 社区 :)
【问题讨论】:
-
如果您能多解释一下重定向并解释“在 URL 上转储视图状态”是什么意思,将会有所帮助。
-
重定向如下:Response.Redirect(String.Concat(strPageUrl, "?reset=true"));它所做的事情是这样的:domain/page.aspx?_VIEWSTATE=afdfkhadkjhqkjdasf 无论如何它已解决 - 是由多个表单标签引起的(如上所述)