2011-07-05 50 views
1

我花了大約兩天的時間來研究這個問題,似乎無法找到解決方案,或者提供的解決方案看起來不像充分解決我遇到的問題。ASP.NET/FireFox - 狀態信息對於此頁無效,可能已損壞

  • 我有一個ASP.NET應用程序,.NET 4.0
  • 間歇,我們將獲得有關視圖狀態損壞錯誤
  • 這似乎只適用於基於Mozilla瀏覽器(不是100%肯定,試圖獲取更多錯誤日誌以確認)
  • 它似乎開始時沒有一致的可重新產生的行爲。
  • 它與MAC不同步無關,我們將我們的機器密鑰/驗證密鑰明確設置並且未設置爲自動生成
  • 它僅在我們的生產環境中發生,從未發生過DEV/QAT/UAT
  • 它發生在具有更新面板的頁面上 - 而某些頁面確實有非常大的視圖狀態,其中一些視圖狀態非常小
  • 看起來並不重要-producable。我發現的一些解決方案與'點擊頁面,點擊進入另一頁面的按鈕,點擊瀏覽器併發生錯誤'有關 - 這不是這種情況。
  • Windows Enterprise 2008上的IIS7,16GB RAM,PAE已啓用。
  • 頁面可以正常工作一段時間,然後停止工作 - 重新啓動IIS可以暫時解決此問題。
  • 這不是在Web場 運行的異常/堆棧跟蹤:

說明:

Error occurred System.Web.HttpException (0x80004005): The state information is invalid for this page and might be corrupted. ---> System.Web.UI.ViewStateException: Invalid viewstate. 

Client IP: <removed> 

Port: 21884 

Referer: <removed> 

Path: /PathToPage/Page.aspx 

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; MS-RTC LM 8) 

ViewState: /wEPDwULLTEyNTU4MDc4NT....<removed by user>... ---> System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown. 

at System.Convert.FromBase64String(String s) 

at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) 

at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) 

at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState) 

at System.Web.UI.HiddenFieldPageStatePersister.Load() 

--- End of inner exception stack trace --- 

at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) 

at System.Web.UI.ViewStateException.ThrowViewStateError(Exception inner, String persistedState) 

at System.Web.UI.HiddenFieldPageStatePersister.Load() 

at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() 

at System.Web.UI.Page.LoadAllState() 

at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

回答

0

由於此問題只發生在更新面板頁,我懷疑你會得到錯誤後打破視圖狀態的更新面板,而你簡單的沒有捕獲,你看不到這個錯誤。

要找到它們,臨時解決方案是刪除更新面板以查看是否有任何錯誤。

第二種解決方案是在中間有些代理或路由器中斷它的情況下,壓縮並剪切視圖狀態的較小部分。

一些更多閱讀:ASP.Net Post timeoutCryptographicException: Padding is invalid and cannot be removed and Validation of viewstate MAC failed

+0

上一次出現此錯誤開始,我得到了代碼的副本從生產分支,它指的生產數據庫和運行在本地(相同的代碼庫,相同的數據庫)。去了導致用戶錯誤的屏幕/實體,重複了這個操作,一切正常。登錄到生產網站,重複FireFox中的操作 - 崩潰。 事情也可以在一段時間內正常工作(過去是發生的月份+,現在幾天發生幾次,沒有應用環境變化)。 – TinMan

+0

@TimMan也聽起來像gzip失敗。如果您在某個部分的頁面上設置了內容長度,請將其刪除,然後重新進行測試。如果在發送頁面之後再次發生gzip,則此內容長度可能爲false,這會導致firefox崩潰。它會因爲內容長度超出頁面而崩潰,並且gzip會給出錯誤,並導致Firefox崩潰。 – Aristos

相關問題