ASP.NET MVC AntiForgeryToken在GET上抛出异常?

时间:2010-06-22 04:54:35

标签: asp.net-mvc antiforgerytoken

我在一些我以前没有注意到的MVC应用程序中遇到了一个奇怪的错误;它发生在我的应用程序中(全面)并且当我尝试运行最新的Orchard drop时发生这种情况(所以我知道它不仅仅是我的代码)。

基本上,问题是我得到了在没有提供AntiforgeryToken时应该抛出的异常,但是在预期的情况下,只有当我点击GET操作时才会得到它;我第一次访问页面。

当我重建应用程序或重新部署应用程序时,我已经跟踪了这种行为。例如,我在我的本地IIS服务器上运行我的站点,然后将设置更改为在Cassini中运行(显然在中间重建等)并且我得到了错误。当我取消Orchard网站并重建它时(在同一个VS中)也是如此。当我重新部署网站上的网站时也一样。

我找到的解决方案是清除我的浏览器cookie,但是在对端点进行GET时遇到错误或者我错过了某些内容似乎很奇怪?

2 个答案:

答案 0 :(得分:2)

这是因为cookie由不同的环境加密。如果没有指定用于加密的机器密钥,.NET将使用埋在machine.config中的那个。

要修复在web.config中添加手动机器密钥定义:

<system.web>    
<machineKey validationKey="stuff" decryptionKey="stuff" validation="SHA1" decryption="AES" />

用它来生成一个:

http://aspnetresources.com/tools/keycreator.aspx

答案 1 :(得分:1)

你是肯定的,你正在击中的动作没有用[ValidateAntiForgeryToken]属性装饰?仅当您具有属性时才会抛出此异常。