我已使用c#语言和代码优先方法在Asp.Net MVC中开发了一个Web应用程序,该应用程序已部署在实际的Web服务器中,并且除了出现几次该错误以外,其运行情况都很好。
The anti-forgery token could not be decrypted. If this application is hosted by a Web Farm or cluster, ensure that all machines are running the same version of ASP.NET Web Pages and that the <machineKey> configuration specifies explicit encryption and validation keys. AutoGenerate cannot be used in a cluster
我称此错误为怪异的原因是它是意外的,这意味着它有时但并非总是发生。
例如,当我尝试从两台不同的计算机登录到我的应用程序的一个帐户(例如,登录到John的帐户)时,我可能会或可能不会收到此错误。
现在,此错误的这种意外性质无法让我弄清楚实际问题出在哪里?
请提供您的建议或意见,以帮助我解决此问题。
谢谢。
答案 0 :(得分:2)
您是否在MachineKey
文件中定义了web.config
?如果否,您可以按照下面的文章查看如何使用IIS管理器轻松创建它
Setting Up the Machine Key Using IIS Manager
<configuration>
<system.web>
<machineKey decryptionKey="Decryption key goes here,IsolateApps"
validationKey="Validation key goes here,IsolateApps" />
</system.web>
</configuration>
重要的重要提示:
如果在视图中添加防伪令牌两次或更多次,则可能导致此问题。检查您的视图,共享视图,局部视图,看看是否仅添加一次anti-forgery
令牌!