Я потратил около двух дней на изучение этой проблемы и, похоже, не могу найти решения, или предоставленные не полностью решают проблему, с которой я столкнулся.
- У меня есть приложение ASP.NET, .NET 4.0
- Периодически мы получим ошибки о коррупции View State
- Это, похоже, относится только к браузерам на базе Mozilla (не уверен на 100%, пытаясь получить больше журналов ошибок для подтверждения)
- Кажется, это начинается без последовательного воспроизводимого действия.
- Это НЕ связано с выходом MAC из синхронизации, у нас явно указан наш машинный ключ / ключ проверки, а не автоматическая генерация
- Это происходит только в нашей производственной среде, никогда не происходило в DEV / QAT / UAT
- Это происходит на страницах с панелью обновления - хотя некоторые страницы имеют очень большое состояние просмотра, некоторые из них имеют очень маленькое состояние просмотра
- Кажется, не воспроизводится. Некоторые решения, которые я нашел, касались «Нажмите на страницу, нажмите на кнопку, которая переходит на другую страницу, снова нажмите в браузере, и произошла ошибка» - это не тот случай.
- IIS7 в Windows Enterprise 2008, 16 ГБ ОЗУ, PAE включен.
- Некоторое время страницы будут работать нормально, а затем перестанут работать - перезапуск IIS временно решает эту проблему.
- Это не работает на веб-ферме
Трассировка исключения / стека:
Описание:
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)