Asp.net mvc ASP.NET MVC 5应用程序中的AntiForgeryToken错误

Asp.net mvc ASP.NET MVC 5应用程序中的AntiForgeryToken错误,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我得到了这个错误-尽管AntiForgeryToken在我的视图中肯定在表单标记中: 所需的防伪cookie “\uuu RequestVerificationToken\ul0npdtplaw5nmtznvkm10”不存在 控制器 /// <summary> /// Delete /// </summary> public ActionResult Delete(int Id) { // Get place from Id var poll = Pol

我得到了这个错误-尽管AntiForgeryToken在我的视图中肯定在表单标记中:

所需的防伪cookie “\uuu RequestVerificationToken\ul0npdtplaw5nmtznvkm10”不存在

控制器

/// <summary>
/// Delete 
/// </summary>
public ActionResult Delete(int Id)
{
    // Get place from Id
    var poll = PollRepo.Select(Id);

    if (poll == null)
        return HttpNotFound();

    return View(poll);
}

/// <summary>
/// Confirm Delete
/// </summary>
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int Id)
{
    // Delete poll by Id from db
    PollRepo.Delete(Id);

    // Redirect to index
    TempData["message"] = "Poll Deleted";
    return RedirectToAction("Index");
}
//
///删除
/// 
公共操作结果删除(int Id)
{
//从Id中获取位置
var poll=PollRepo.Select(Id);
if(poll==null)
返回HttpNotFound();
返回视图(投票);
}
/// 
///确认删除
/// 
[HttpPost,ActionName(“删除”)]
[ValidateAntiForgeryToken]
公共行动结果删除已确认(内部Id)
{
//从数据库中删除按Id进行的轮询
PollRepo.Delete(Id);
//重定向到索引
TempData[“message”]=“轮询已删除”;
返回操作(“索引”);
}
查看

    <dd>
        @Html.DisplayFor(model => model.Abc)
    </dd>

</dl>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <div class="form-actions">
        <input type="submit" value="Delete" class="btn btn-default" /> |
        @Html.ActionLink("Back to List", "Index")
    </div>
}

@DisplayFor(model=>model.Abc)
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
|
@ActionLink(“返回列表”、“索引”)
}
在生成的HTML页面中

<form action="/MyApp/MyCont/MyAct/Delete/7" method="post"><input name="__RequestVerificationToken" type="hidden" value="JYMlRqNTUF6eoagnN6k7GrC1mJLKs1HDU4RCY_5_MEh2sIoJtumYEiM4LQF2BcKrf881xm-zdRU-KwBt381L9vBhuEJRLnMJY8aEgjVvdd41" /> 


当我按下删除按钮时,返回错误。

您看到的错误消息与防伪cookie有关,而不是令牌(您显示的代码将在请求中正确提交令牌)

除了来自恶意用户的攻击或导致删除cookie的客户端上的其他内容外,此错误的一个原因是您的
web.config.cs
文件包括

<httpCookies requireSSL="true" />


但是您的项目没有设置为使用SSL。

消息指的是防伪cookie,因此这是由于cookie不存在。
web.config.cs
文件中有
,但项目没有设置为使用SSL。@StephenMuecke这是必需的。谢谢!服务器需要SSL-此标志在开发人员计算机上也被错误设置。如果将其转换为答案,我将接受它。我在上发现的关于此错误的信息非常少,但我认为还有其他原因可能导致此错误,如果我发现任何问题,我会稍后更新答案。否则,我会将其标记为社区wiki,以便其他人可以使用其他可能的原因对其进行编辑。