Невозможно проверить данные. в System.Web.Configuration.MachineKeySection.GetDecodedData - PullRequest
4 голосов
/ 17 апреля 2010

У меня есть несколько веб-сайтов, которые получают примерно 3000 просмотров страниц в день, и я получаю эту ошибку состояния примерно 5-10 раз в день, полученную в global.asax:

System.Web.HttpException: невозможно проверить данные. в System.Web.Configuration.MachineKeySection.GetDecodedData (Bute [] buf, модификатор Byte [], запуск Int32, длина Int32, Int32 & dataLength) в System.Web.UI.ObjectStateFormatter.Deserialize (String inputString)

Я пробовал:

  • жестко закодировать машинный ключ в web.config для всех сайтов
  • Жесткое кодирование машинного ключа в machine.config
  • добавление элементов в раздел страниц web.config для всех сайтов.

Ключ машины выглядит так:

<machineKey validationKey="key goes here" decryptionKey="key goes here" validation="SHA1" decryption="AES" />

Раздел страниц выглядит так:

<pages renderAllHiddenFieldsAtTopOfForm="true" validateRequest="false"  enableEventValidation="false" viewStateEncryptionMode="Never">

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

У кого-нибудь есть идеи?

1 Ответ

2 голосов
/ 27 февраля 2011

Я видел "случайные" ошибки ViewState, ранее вызванные медленным интернет-соединением. Медленные соединения могут вызвать визуальное отображение страницы для пользователя, однако она не была полностью загружена. Затем пользователь будет предпринимать действия с формой, и, таким образом, будут возникать «случайные» проблемы.

Проверьте, можете ли вы соотнести временные метки исключений с конкретными страницами, запрашиваемыми в журналах IIS. Затем вы можете попытаться воссоздать сценарий низкой пропускной способности, например, Firefox Throttle .

Подобный вопрос ниже подтверждает мой опыт и, вероятно, то, что вы видите:

ASP.NET: невозможно проверить данные

...