18

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

无法解密防伪令牌。如果此应用程序由 Web Farm 或群集托管,请确保所有计算机都运行相同版本的 ASP.NET 网页,并且配置指定显式​​加密和验证密钥。AutoGenerate 不能在集群中使用。

我从( ASPNET 资源)生成了一个新的机器密钥并将其放在我的配置文件中,但仍然无法正常工作。有人可以提出解决方案吗?

4

5 回答 5

33

我注意到的一件事是,此错误可能是由@Html.AntiForgeryToken()页面上有多段代码引起的。我的页面上有 2 个,一旦我删除了第二个,这个错误就消失了。

于 2013-06-26T13:17:19.213 回答
7

您应该添加对网站/机器组合唯一的机器密钥。令牌生成器使用的是这个机器密钥。这意味着您应该生成一个机器密钥(您可以在此处执行此操作(当心死链接)并将其添加到您机器上的 Web.config 文件中。您可以在此处找到更多信息:http: //msdn.microsoft.com /en-us/library/ff649308.aspx

您也可以直接从 IIS 中执行此操作:http: //blogs.msdn.com/b/amb/archive/2012/07/31/easyest-way-to-generate-machinekey.aspx

于 2013-04-03T14:17:43.973 回答
4

在那里我找到了答案http://iamdotnetcrazy.blogspot.ru/2013/08/how-to-solve-anti-forgery-token-could.html

于 2014-02-14T15:05:30.990 回答
1

在我的情况下,这是负载均衡器没有为站点打开会话持久性的问题。

于 2014-03-05T10:46:10.617 回答
0

我有一个使用局部视图的页面。两者都包含 @Html.AntiForgeryToken() 并且在从部分页面中删除 @Html.AntiForgeryToken() 时,它起作用了。

于 2016-04-15T16:52:34.077 回答