将网站移动到新服务器后无法加载视图状态错误

时间:2012-04-04 09:02:08

标签: asp.net iis

我真的不知道从哪里开始。我得到了:

`Failed to load viewstate.  The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request.  For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.`
将网站移动到新服务器后

。完全相同的代码适用于我的其他服务器。当我提交我的一个表格时会发生这种情况(但不会在所有表格中提交)。

任何可能导致这种情况的想法,所以我有什么地方可以看?

使用:ASP.NET 2。

编辑:我在运行时动态地向占位符添加了一些用户控件,但是这个代码在我的其他服务器上运行正常。我已经尝试在添加新的控件之前清除占位符中的控件(因为我看到了一篇关于它的帖子),但它没有帮助。

EDIT2:似乎回发只是失败了。它没有进入按钮的onClick代码,所以有些东西是deffintiely screwy ..如果我尝试/捕获异常似乎所有控件仍然成功添加...将我的动态UC设置为EnableViewState = false解决此问题特别错误。

EDIT3:好的,我想我可能已经掌握了正在发生的事情。出于某种原因,在旧服务器上,表单操作为default.aspx?action=amend,但新服务器显示amend.html?action=amend,所以我认为重写模块在IIS中搞乱了。这也可以解释控制添加问题,因为动作发生了2次(我认为)。我将查看Rewrite模块,看看是否有任何错误,然后回发。

2 个答案:

答案 0 :(得分:1)

请看看这些文章:

http://blog.typps.com/2008/01/failed-to-load-viewstate-typical.html

http://weblogs.asp.net/guys/archive/2004/12/05/275321.aspx

或尝试一个简单的临时解决方案 - 禁用此占位符的viewstate。无论哪种方式,我都很困惑为什么它实际上可以在你的第一台服务器上运行。如果其他人能够更多地澄清这个话题,我会很高兴。

答案 1 :(得分:0)

事实证明,该服务器上的帖子后备Url是错误的(不确定为什么此刻,当我知道时我会更新)。这导致动态控件以意外方式添加并导致错误。当我设法发布我的表单并且内容没有更新时,我注意到了这一点。我使用firebug手动调整了动作网址,一切都很好。

值得关注沃尔特关于动态控制和观点的答案。

不确定是什么导致了它但是我现在在页面加载中手动设置表单操作,它似乎解决了这个问题。