我们在ASP.NET MVC 4网站上使用Amazon EC2 Elastic Beanstalk,并在用户尝试登录后收到错误消息:
无法解密防伪令牌。如果这个应用程序是 由Web场或群集托管,确保所有计算机都在运行 相同版本的ASP.NET网页和 configuration指定显式加密和验证密钥。 无法在群集中使用AutoGenerate。
我们认为问题可能是由于会话状态处于proc并且具有动态实例,因此我们将其移至SQL Server但仍然收到错误。奇怪的是,有时候登录很好,有时你会得到错误。
在像EC2这样的动态Web服务器环境中,是否需要采取一些特殊措施来处理ASP.NET MVC的这个问题?
答案 0 :(得分:2)
您需要在webconfig中明确设置解密密钥和验证密钥
<configuration>
<system.web>
<machineKey decryptionKey="Decryption key goes here, IsolateApps"
validationKey="Validation key goes here, IsolateApps" />
</system.web>
</configuration>
您可以查看以下文章了解详情http://iamdotnetcrazy.blogspot.com/2013/08/how-to-solve-anti-forgery-token-could.html
答案 1 :(得分:1)
我删除了'IsolatedApps',这似乎对我有用。
答案 2 :(得分:0)
我的解决方法是获取cookie和表单令牌值,如下所示:
AntiForgery.GetTokens(null, out var cookieToken, out var formToken);