Ошибка ASP.NET проверки MAC-адреса viewstate
У меня есть listView для отображения списка данных. Все было хорошо, и мы получили сообщение об ошибке ниже:
Не удалось выполнить проверку MAC-адреса viewstate. Если это приложение размещено в Интернете Ферма или кластер, убедитесь, что конфигурации validationKey и проверка алгоритм. AutoGenerate не может использоваться в кластере. Неверное представление. клиент IP... User-Agent: Mozilla/4.0 (совместимый MSIE 7.0; Windows NT 5.1;.NET CLR 1.1.4322;.NET CLR 2.0.50727;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729; InfoPath.3) ViewState:
Может кто-нибудь, пожалуйста, проведет меня, как решить эту проблему. Пожалуйста, обратите внимание:
1. Наш сервер IIS является автономным, а не фермером.
Обновление:
В ListView есть гиперссылка на записи, в которых можно щелкнуть.
Спасибо кучи.
Ответы
Ответ 1
Возможно, IIS переработал ваше приложение, и поэтому вы получите новые ключи для состояния сеанса/просмотра. Чтобы облегчить это, добавьте статический ключ машины в файл web.config.
Сгенерируйте ключ из http://www.eggheadcafe.com/articles/GenerateMachineKey/GenerateMachineKey.aspx
И поместите ключи в свой пример web.config ниже
<machineKey
validationKey="56AB7132992003EE87F74AE4D9675D65EED8018D3528C0B8874905B51940DEAF6B85F1D922D19AB8F69781B2326A2F978A064708822FD8C54ED74CADF8592E17"
decryptionKey="A69D80B92A16DFE1698DFE86D4CED630FA56D7C1661C8D05744449889B88E8DC"
validation="SHA1" decryption="AES" />
<machineKey>
следует поместить в раздел <system.web>
.
Ответ 2
Я думаю, что проблема в Different keys across postback
, поэтому вам нужно сгенерировать новые ключи шифрования.
Из проекта кода:
Существует два ключа, которые использует ASP.NET для шифрования, дешифрования и проверки данных в ViewState, Forms Authetication билеты и сеанс вне процесса данные. Файл decryptionKey используется для шифрование и дешифрование аутентификационные билеты и зашифрованные Информация о ViewState. validationKey используется для проверки ViewState и убедитесь, что он не был подделывается и генерирует уникальные идентификаторы сеанса для приложения для внеочередное хранилище сеансов. Вы можете столкнуться с проблемами, если ключ изменяется между postbacks.
Хорошая статья, как это сделать здесь, здесь, здесь и здесь.
В целом вам необходимо учитывать некоторые проблемы при переходе в производственную среду.
Хорошая статья об этом здесь.
Ответ 3
Не зная специфики вашего приложения, один из способов, которым это может случиться, если страница будет отправлена до полной загрузки. Вы можете работать с помощью javascript, чтобы предотвратить обратную передачу/отправку до того, как страница будет полностью загружена. Также попробуйте уменьшить размер страницы, если это возможно. Отключите состояние просмотра для любых элементов управления, которые вы не используете.
Ответ 4
Это может произойти в другом сценарии, когда перезапуск пула происходит до завершения выполнения команды Sql, когда ваше приложение обрабатывает большой объем данных (такой тип генерации отчетов... и т.д.). Проверьте пул приложений вашего приложения и увеличьте интервал переработки.
Ответ 5
Это может помочь вам:
<%@ Page EnableViewStateMac="false" Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
Примечание EnableViewStateMac="false"