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)
上一次出現此錯誤開始,我得到了代碼的副本從生產分支,它指的生產數據庫和運行在本地(相同的代碼庫,相同的數據庫)。去了導致用戶錯誤的屏幕/實體,重複了這個操作,一切正常。登錄到生產網站,重複FireFox中的操作 - 崩潰。 事情也可以在一段時間內正常工作(過去是發生的月份+,現在幾天發生幾次,沒有應用環境變化)。 – TinMan
@TimMan也聽起來像gzip失敗。如果您在某個部分的頁面上設置了內容長度,請將其刪除,然後重新進行測試。如果在發送頁面之後再次發生gzip,則此內容長度可能爲false,這會導致firefox崩潰。它會因爲內容長度超出頁面而崩潰,並且gzip會給出錯誤,並導致Firefox崩潰。 – Aristos