我有一个表单提交,但总是提示我反伪造令牌错误。
这是我的表单:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.EditorFor(m => m.Email)
@Html.EditorFor(m => m.Birthday)
<p>
<input type="submit" id="Go" value="Go" />
</p>
}
这是我的操作方法:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Join(JoinViewModel model)
{
//a bunch of stuff here but it doesn't matter because it's not making it here
}
这是在web.config中的machineKey:
<system.web>
<machineKey validationKey="mykey" decryptionKey="myotherkey" validation="SHA1" decryption="AES" />
</system.web>
这是我收到的错误信息:
A required anti-forgery token was not supplied or was invalid.
我读到过在HttpContext上更改用户将会使令牌失效,但这里并没有发生。我的Join操作的HttpGet只是返回视图:
[HttpGet]
public ActionResult Join()
{
return this.View();
}
所以我不确定发生了什么。我搜索了一下,似乎所有的东西都表明这要么是机器密钥更改(应用程序周期),要么是用户/会话更改。
还有什么其他情况可能发生?我该如何进行故障排除?