Ошибка 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"