我刚刚结束了一个大学项目,我不确定我是否盯着我的电脑看得太久而遗漏了一些明显的东西,但是当我尝试注销一个用户时,我得到了找不到 URL/Account/LogOff 的 404。
我有一个导航栏,它根据用户是登录还是注销来显示登录/注销:
<div class="nav-collapse collapse">
<ul class="nav pull-right">
<li class="dropdown" id="dropdown-login-div">
@if (!Request.IsAuthenticated)
{
<a class="dropdown-toggle" href="#" data-toggle="dropdown">Sign In <strong class="caret"></strong></a>
}
else
{
@Html.ActionLink("Log Off", "LogOff", "Account")
}
<div class="dropdown-menu" id="dropdown-login">
@Html.Partial("~/Views/Account/_LoginPartial.cshtml", new ViewDataDictionary<LetLord.Models.LoginModel>())
</div>
</li>
</ul>
</div>
在我的帐户 Controller 中,Internet 模板附带的默认注销操作:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
WebSecurity.Logout();
return View("Index");
}
在我把笔记本电脑扔到墙上之前,有人能告诉我为什么会这样吗?干杯。
最佳答案
您使用一个链接(<a/>
标签)注销,当用户点击它时会导致 HTTP GET 请求,但您的操作仅限于提供 POST仅请求(因为它装饰有 [HttpPost]
属性)。
您需要将链接放入表单并生成 POST 请求,或者删除 [HttpPost]
和 [ValidateAntiForgeryToken]
(归功于 GalacticCowboy)来自你的行动。
关于c# - MVC 4 - 未找到 404 的注销 Controller 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16020955/