2012-04-04 57 views
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

編輯:我添加一些用戶控件的佔位符在運行時動態但這同樣的代碼是我的另一臺服務器上工作正常。我已經嘗試在添加新的控件之前清除控件(正如我看到的一篇文章),但它沒有幫助。

編輯2:似乎回發只是失敗。它不會進入按鈕的onClick代碼,所以有些東西是deffintiely擰。如果我嘗試/趕上例外似乎所有的控件仍然添加成功...設置我的動態UC的EnableViewState = false解決這個問題特別的錯誤。編輯3:好吧,我想我可能會處理髮生的事情。出於某種原因舊服務器上的表單動作是default.aspx?action=amend,但新服務器顯示爲amend.html?action=amend,所以我認爲重寫模塊在IIS中搞亂了。這將解釋控制添加問題,因爲該動作發生了2次(我認爲)。我會研究重寫模塊,看看是否有錯誤,然後回發。

+0

兩臺服務器都有相同版本的.NET?我在網上發現了一些案件,當時它是由一些兼容性問題導致的.net2 vs .net3.5,所以也許值得檢查。 – walther 2012-04-04 09:10:36

+0

是的,兩臺服務器不幸的有相同的版本。 – webnoob 2012-04-04 09:19:56

+0

您是否嘗試過識別導致此問題的控件?你是否動態添加一些控件? – walther 2012-04-04 09:30:41

回答

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的這個佔位符。無論哪種方式,我很困惑它爲什麼它實際上在你的第一臺服務器上工作。如果有人能夠更多地闡明這個問題,我會很高興。

+0

我已經發布了另一個編輯,可能會闡明一些內容。 – webnoob 2012-04-04 10:09:24

0

事實證明,此服務器上的表單的後發Url是錯誤的(不確定爲什麼此刻,我會在我知道的時候更新)。這導致動態控件以意想不到的方式添加並導致錯誤。當我設法發佈我的表單並且內容沒有更新時,我注意到了這一點。我手動調整了使用螢火蟲的動作網址,一切都很好。

值得關注的是,關於動態控件和視圖狀態的walther的答案。

不知道是什麼導致了它,但我現在手動設置頁面加載的表單動作,它似乎已經解決了這個問題。

相關問題