我一直在我的ELMAH日志中看到错误"所需的防伪cookie"__RequestVerificationToken_L3N0dWRlbnQ1"不存在",但我自己无法重现该错误。
我的控制器操作如下所示:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SignIn(LoginModel loginModel)
我的观点是这样的:
@using (Html.BeginForm("SignIn", "Home", "", FormMethod.Post, new { @class = "form-inline LoginForm" }))
{
@Html.AntiForgeryToken()
...
}
ELMAH 日志指示已发布以下表单项:
<form>
<item name="__RequestVerificationToken">
<value string="UjQsZ1QB4ryA-e0RleFb7f0ORB9QPbsJrzoXn6D8XiqN9CEGysiVC94Ark4FnAFfx3C2eAG5KhAiVlP8nob8xkCg2k_8oUyLYwDmR39qu8g1"/>
</item>
...
</form>
然而,唯一存在的cookie是 ASP.NET 会话cookie
<cookies>
<item name="ASP.NET_SessionId">
<value string="d4rlkdgp1ot2gpcmjtirfym1"/>
</item>
</cookies>
我还注意到帖子中有一个我没有明确设置的查询字符串值。
<queryString>
<item name="Length">
<value string="0"/>
</item>
</queryString>
有什么想法吗?
此问题仅发生在移动设备上,因为在浏览器中访问的最后一个页面被缓存(但没有防伪cookie)。 我添加了必要的代码以防止浏览器缓存页面,问题已解决。