【发布时间】:2010-11-06 01:43:54
【问题描述】:
从现在开始,第一次,当我开始调试我的 MVC 应用程序时,我收到了这个错误
视图状态 MAC 验证失败。如果 此应用程序由 Web 托管 场或集群,确保 配置指定 相同的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>
【问题讨论】:
-
尝试清除浏览器缓存。
-
刚刚制作没有成功。如果我重新启动计算机,一切正常运行半小时,然后问题再次出现......
-
您是否将应用程序部署在负载平衡的服务器中?如果没有,请在此处查看此链接:blogs.msdn.com/b/tom/archive/2008/03/14/…。
-
@mallows98:正如我所写的,该错误仅在 VS2010 内部调试期间发生,部署后从未发生过