В 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
фиксированных значений. Дополнительную информацию смотрите по следующей ссылке:
Я сильно сомневаюсь, что эта проблема имеет какое-либо отношение к Viewstate. Это больше связано с состоянием сеанса и файлами cookie аутентификации.
работает ли ваше приложение на веб-ферме / саду ? Если это так, вы должны взглянуть на в этой статье.
Если нет, эта ошибка может часто возникать, если время ожидания FormsAuthenticationTicket меньше времени ожидания сеанса. Что происходит, так это то, что билет Auth истекает раньше, чем сеанс пользователя и следующий запрос не может быть аутентифицирован.
Это похоже на проблему аутентификации. У вас, вероятно, есть тайм-аут, установленный для билета аутентификации, который истекает. Если вы используете скользящий тайм-аут, то каждый раз, когда вы попадаете на сервер, билет будет обновляться. Если вы не ваши билеты аннулируются и вы должны обрабатывать этот случай.
Edit:
вы можете проверить это поддержка статья, чтобы узнать, относится ли она к вам.
также вы можете проверить это посмотреть состояние зритель может помочь вам определить, является ли состояние представления недопустимым.
У меня также была эта ошибка....
Если вы посмотрите на ошибку, скорее всего, ваша зашифрованная строка запроса URL. Что происходит, это webresource.созданная axd строка URL имеет идентификаторы, которые были зашифрованы с помощью параметра machinekey. Они истекают, и если у вас есть страница, на которой вы сидите, попробуйте отправить с помощью зашифрованной строки, будет запущен идентификатор события 1316 или 4009. Вероятно, вы camn фиксируете это исключение в событии Application_Error и проверяете, является ли CryptographicException был уволен.