3

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

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

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

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

4

2 回答 2

2

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

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

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

使用它来生成一个:

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

于 2010-06-22T13:40:14.377 回答
1

你确定你击中的动作没有用[ValidateAntiForgeryToken]属性装饰吗?仅当您具有该属性时才会引发此异常。

于 2010-06-22T05:51:26.557 回答