ASP.NET/FireFox - информация о состоянии недопустима для этой страницы и может быть повреждена - PullRequest
1 голос
/ 06 июля 2011

Я потратил около двух дней на изучение этой проблемы и, похоже, не могу найти решения, или предоставленные не полностью решают проблему, с которой я столкнулся.

  • У меня есть приложение 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)

1 Ответ

0 голосов
/ 06 июля 2011

Поскольку эта проблема возникает только на странице панели обновления, я подозреваю, что после панели обновления вы получаете сообщение об ошибке, которое нарушает состояние представления, и вы просто не уловили и не можете увидеть эти ошибки.

Чтобы найтивременное решение - удалить панель обновления, чтобы увидеть, есть ли какие-либо ошибки.

Второе решение - сжать и обрезать состояние просмотра в меньшей части в случае, если какой-либо прокси или маршрутизатор в середине сломает его.

Еще кое-что прочитать: Тайм-аут поста ASP.Net и CryptographicException: заполнение недопустимо и не может быть удалено, а проверка MAC состояния представления не выполнена

...