Я получаю эту ошибку, и я знаю, что ее вызывает. Есть много причин, но в моем случае проблема заключается в том, что машинный ключ отличается от сервера к серверу (в веб-ферме), и поэтому, когда он перескакивает с машины на машину, он не может расшифровывать viewstate и/или cookie. С тех пор я исправил эту проблему, однако некоторые пользователи по-прежнему оставляют файлы cookie на своей машине, написанные со старым машинным ключом, и они получают эту ошибку. Мне нужен хороший способ справиться с этой ошибкой, вывести их из системы, а затем перенаправить обратно на страницу входа. Я попытался помещать обработчик исключений в global.asax в Application_error, но это не похоже на ошибку. Происходят другие ошибки, и я отфильтровал эту ошибку (посмотрев на исключение). У меня есть customErrors 'on' в web.config. Как мне это сделать?asp.net Не удалось проверить данные
1
A
ответ
1
Существует несколько способов решения этой проблемы. Лучшее общее решение установить ключи шифрования и дешифрования в явном виде в machine.config
каждого сервера:
<machineKey validationKey="JFDSGOIEURTJKTREKOIRUWTKLRJTKUROIUFLKSIOSUGOIFDS..." decriptionKey="KAJDFOIAUOILKER534095U43098435H43OI5098479854" validation="SHA1" />
Другой вариант, чтобы отключить шифрование ViewState в целом, но вы потеряете некоторые преимущества в плане безопасности, делая это:
<pages viewStateEncryptionMode="Never" />
Наконец, вы можете отключить проверку:
<pages enableViewStateMac="false" ... />
Да - может быть, я не ясно в моем вопросе. Я знаю, как решить проблему «неспособность проверить данные», но я хочу, чтобы пользователи, у которых уже есть файлы cookie, не получают эту ошибку, когда я помещаю ключи в файл machine.config. Я в основном хочу изящно обработать ошибку и перенаправить их на страницу входа (или на другую страницу). –