出版我的ASP.NET MVC Web应用程序的一个新的版本后,我经常会看到这样的例外在浏览网站的时候抛出:的ViewState MAC的ASP.NET MVC验证失败
System.Web.Mvc.HttpAntiForgeryException:所需的防伪标记未提供或无效。 ---> System.Web.HttpException:viewstate MAC的验证失败。如果此应用程序由Web Farm或群集托管,请确保配置指定相同的验证密钥和验证算法。 AutoGenerate不能在群集中使用。 ---> System.Web.UI.ViewStateException:无效的视图状态。
在我访问我的Web应用程序的每个页面上,这个异常都会继续发生,直到我关闭Firefox。重新打开Firefox后,该网站完美运行。任何想法发生了什么?
其他注意事项:
- 我没有使用任何ASP.NET Web控件(也有在我的应用程序RUNAT = “服务器” 的任何实例)
- 如果我拿出<%= HTML .AntiForgeryToken%>从我的网页,这个问题似乎消失
即使输入machineKey,我仍然收到错误。难道是服务器上的machine.config(我没有访问到这个)配置不正确? – jesperlind 2009-11-12 01:54:40
@jesperlind :(有点晚,但任何人阅读这可能会有所帮助...)你仍然得到的错误,因为你有一个来自添加机器密钥之前的cookie。如果您将机器钥匙从头开始锁定,它将无法顺利运行。 – Guffa 2011-10-21 07:53:08
注意:请勿使用上述代码中的确切机器密钥。如果所有网站都有相同的机器密钥,则很容易规避。使用在线机密钥生成器生成唯一密钥,例如http://aspnetresources.com/tools/machineKey – Guffa 2011-10-21 08:21:10