部署AntiforgeryToken错误

时间:2013-04-03 13:37:34

标签: asp.net-mvc web-config antiforgerytoken

我正在使用IISExpress中内置的Visual Studio 2012在本地计算机上处​​理ASP.NET MVC应用程序。在取得重大进展后,我决定通过本地网络提供它,我从visual studio创建了一个虚拟目录。我可以登录,但是当我尝试注册新用户时。我收到以下错误。

  

无法解密防伪令牌。如果这个应用程序是   由主办        Web场或群集,确保所有计算机都运行相同的版本        ASP.NET Web Pages以及配置指定的显式        加密和验证密钥。无法在群集中使用AutoGenerate。

我从(ASPNET resources)生成了一个新的机器密钥并将其放在我的配置文件中,但仍然无法正常工作。是否有人建议解决方案?

5 个答案:

答案 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(),它工作。