Ошибка при отладке приложения MVC: сбой проверки MAC представления состояния - PullRequest
10 голосов
/ 06 ноября 2010

При запуске формы сейчас, впервые, я получаю эту ошибку, когда начинаю отлаживать приложение MVC

Ошибка проверки состояния MAC-адреса. Если это приложение размещено в сети Ферма или кластер, убедитесь, что конфигурация указывает тот же validationKey и validation алгоритм. Автогенерация не может быть использована в кластере.

Полная трассировка стека

[ViewStateException: Invalid viewstate. 
    Client IP: 127.0.0.1
    Port: 
    Referer: 
    Path: /Login/LogOn
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.41 Safari/534.7
    ViewState: Fvq7WNUu+qCC00VbTIOTUuBvK4YHjxp3RubwsrFYW93hKlF7I4GLzaNHceRqjjJB0GwvRPWwlwE6brhAZAo+Mp191B/C+l8Dw/w7aQBDCpWGC3ox6hkSeZp10vbjm9eJFQZmGSPyC1rKYwApBBaz0Q==]

[HttpException (0x80004005): Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.]
   System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +198
   System.Web.UI.ViewStateException.ThrowMacValidationError(Exception inner, String persistedState) +14
   System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +274
   System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +4
   System.Web.Mvc.AntiForgeryDataSerializer.Deserialize(String serializedToken) +176

Что это значит?

Обратите внимание : ошибка возникает только во время отладки. При развертывании приложения на локальном IIS все работает. Он отображается в следующем коде на моей главной странице

<form id="__AjaxAntiForgeryForm" action="#" method="post">
    <%= Html.AntiForgeryToken() %>
</form>

Ответы [ 2 ]

2 голосов
/ 10 ноября 2010

Непосредственная причина, по которой это происходит, заключается в том, что антивирусный cookie-файл становится недействительным.Закрытие и повторное открытие браузера должны решить проблему.В качестве альтернативы вы можете попробовать удалить cookie, связанный с вашим тестовым сайтом.

Теперь по основной причине это обычно происходит либо потому, что

  • вы находитесь в сценарии веб-фермы и ваших различных серверах.не настроены одинаково (но вы говорите, что это не так)
  • приложение изменяет автоматически сгенерированный MAC из-за изменений, которые вы вносите в конфигурацию приложения
  • , недавно вы применили патчисправить уязвимость шифрования Asp.Net ViewState (которая изменила способ выполнения шифрования в asp.net).

Что-нибудь из этого звучит знакомо?

1 голос
/ 10 ноября 2010

У нас возникла похожая проблема после установки исправления на сервере для исправления уязвимости ASP.NET при просмотре на машинах без KB2416471 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...