0

我真的不知道从哪里开始。我正进入(状态:

`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 代码,所以有些东西肯定很奇怪。特定的错误。

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

4

2 回答 2

1

请看看这些文章:

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

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

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

于 2012-04-04T09:48:33.087 回答
0

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

值得一看 walther 关于动态控件和视图状态的答案。

不知道是什么原因造成的,但我现在在页面加载中手动设置表单操作,它似乎已经解决了这个问题。

于 2012-04-04T10:35:30.897 回答