我正在使用IISExpress中内置的Visual Studio 2012在本地计算机上处理ASP.NET MVC应用程序。在取得重大进展后,我决定通过本地网络提供它,我从visual studio创建了一个虚拟目录。我可以登录,但是当我尝试注册新用户时。我收到以下错误。
无法解密防伪令牌。如果这个应用程序是 由主办 Web场或群集,确保所有计算机都运行相同的版本 ASP.NET Web Pages以及配置指定的显式 加密和验证密钥。无法在群集中使用AutoGenerate。
我从(ASPNET resources)生成了一个新的机器密钥并将其放在我的配置文件中,但仍然无法正常工作。是否有人建议解决方案?
答案 0 :(得分:33)
我注意到的一件事是,这个错误可能是由于页面上有多个@Html.AntiForgeryToken()
个代码段引起的。我的页面上有2个,一旦我删除了第二个,这个错误就消失了。
答案 1 :(得分:7)
您应该添加网站/机器组合独有的机器密钥。这是令牌生成器使用的机器密钥。这意味着您应该生成一个机器密钥(您可以执行here (dead link-beware)并将其添加到计算机上的Web.config文件中。您可以在此处找到更多信息: http://msdn.microsoft.com/en-us/library/ff649308.aspx
您也可以直接在IIS中执行此操作:http://blogs.msdn.com/b/amb/archive/2012/07/31/easiest-way-to-generate-machinekey.aspx
答案 2 :(得分:4)
答案 3 :(得分:1)
在我的情况下,这是负载均衡器没有为站点启用会话持久性的问题。
答案 4 :(得分:0)
我有一个使用局部视图的页面。两者都包含@ Html.AntiForgeryToken()和从部分页面中删除@ Html.AntiForgeryToken(),它工作。