В ASP.Net, я иногда получаю следующую ошибку-ошибка проверки Viewstate. Причина: поставляемая viewstate ошибка проверки целостности

фон: я разработал веб-приложение в ASP.Net 3.5 in C#. Он отлично работает, но теперь несколько пользователей сообщили, что иногда они получают ошибку. Я попытался дублировать ошибку, но это было трудно. Однажды, когда я позволил приложению сидеть, я вернулся позже и попытался переместить его, и он ошибся. Я бы подумал, что это имеет какое-то отношение к таймауту, но я использую состояние представления.

какие идеи? Когда я смотрю на eventLog, я вижу следующую ошибку вхождение.

Спасибо за вашу помощь и идеи!

Джон


в моем журнале событий есть следующие ошибки:

код события: 4005

сообщение о событии: ошибка проверки подлинности форм для запроса. Причина: срок действия билета истек.

время события: 14/03/2008 13:19:26

время события (UTC): 14/03/2008 13:19:26

идентификатор события: d9f0333c2eed46e0b0207da69d2ea70e

событие последовательность: 154

событие: 5

код детали события: 50202


код события: 3005

сообщение о событии: возникло необработанное исключение.

время события: 3/12/2009 7:49: 59 AM

время события (UTC): 3/12/2009 11:49: 59 AM

идентификатор события: 590ac0f6ad734d988e9e02f0fb7800eb

последовательность событий: 52

события: 1

код детали события: 0

приложения:

Application domain: /LM/W3SVC/32/ROOT-1-128813294498061103 

Trust level: Full 

Application Virtual Path: / 

Application Path: C:HomeLocalUserucpgaWeb 

Machine name: 169349-WEB2 

информация о процессе:

Process ID: 6912 

Process name: w3wp.exe 

Account name: NT AUTHORITYNETWORK SERVICE 

последняя ошибка:

код события: 4009 Сообщение о событии: ошибка проверки Viewstate. Причина: поставляемая viewstate ошибка проверки целостности. Время события: 3/15/2009 10:26: 27 PM Время события (UTC): 3/16/2009 2:26: 27 AM Код события: 3b5be134005e49c3b40400bcaa5cb48d Последовательность событий: 56 События: 1 Код детали события: 50203

сведения о приложении : Домен приложения: /LM/W3SVC/32/ROOT-1-128816433841748972 Уровень доверия: полный Виртуальный Путь Приложения: / Путь К Приложению: C:HomeLocalUserucpgaWeb Имя машины: 169349-WEB2

информация о процессе: ID процесса: 8892 Имя процесса: w3wp.исполняемый Имя учетной записи: NT AUTHORITYNETWORK SERVICE

запросить информацию: URL-адрес запроса: https://hr.ucpga.org:443/application.aspx Путь запроса: /приложение.аспн Адрес хоста пользователя: 74.160.64.222 Пользователь:
Аутентифицируется: False Тип Аутентификации:
Имя учетной записи потока: 169349-WEB2ucpga

ViewStateException информация: Сообщение об исключении: неверное отображение. IP-адрес клиента: 74.160.64.222 Порт: 1251 User-Agent: Mozilla / 4.0 (совместимый; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; В InfoPath.1)

4 ответов


эта проблема часто может быть вызвана тем, что автоматически генерируется <machineKey /> ключи . Каждый раз, когда ваше приложение запускается заново, оно будет генерировать новые ключи. Это делает недействительными все существующие зашифрованные билеты проверки подлинности viewstate или forms.

попробуйте установить <machineKey /> validationKey и decryptionKey фиксированных значений. Дополнительную информацию смотрите по следующей ссылке:

как настроить MachineKey в ASP.NET 2.0 (MSDN)


Я сильно сомневаюсь, что эта проблема имеет какое-либо отношение к Viewstate. Это больше связано с состоянием сеанса и файлами cookie аутентификации.

работает ли ваше приложение на веб-ферме / саду ? Если это так, вы должны взглянуть на в этой статье.

Если нет, эта ошибка может часто возникать, если время ожидания FormsAuthenticationTicket меньше времени ожидания сеанса. Что происходит, так это то, что билет Auth истекает раньше, чем сеанс пользователя и следующий запрос не может быть аутентифицирован.


Это похоже на проблему аутентификации. У вас, вероятно, есть тайм-аут, установленный для билета аутентификации, который истекает. Если вы используете скользящий тайм-аут, то каждый раз, когда вы попадаете на сервер, билет будет обновляться. Если вы не ваши билеты аннулируются и вы должны обрабатывать этот случай.


Edit:

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

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

вот тут сообщение от инженера эскалации Microsoft


У меня также была эта ошибка....

Если вы посмотрите на ошибку, скорее всего, ваша зашифрованная строка запроса URL. Что происходит, это webresource.созданная axd строка URL имеет идентификаторы, которые были зашифрованы с помощью параметра machinekey. Они истекают, и если у вас есть страница, на которой вы сидите, попробуйте отправить с помощью зашифрованной строки, будет запущен идентификатор события 1316 или 4009. Вероятно, вы camn фиксируете это исключение в событии Application_Error и проверяете, является ли CryptographicException был уволен.