我有一个具有不同用户帐户和密码的 MVC 应用程序。登录功能工作正常,但当我单击注销按钮时,出现 404 错误:
“/”应用程序中的服务器错误。
无法找到该资源。
描述:HTTP 404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保其拼写>正确。
请求的 URL:/Account/LogOff
这是注销按钮的代码:
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Log Off", "LogOff", "Account")</li>
</ul>
</div>
这是AccountController中的代码
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
Session.Clear();
FormsAuthentication.SignOut();
return RedirectToAction("Index", "Home");
}
Html.ActionLink
呈现常规超链接,这会导致 GET 请求。
Your LogOff
有HttpPost
属性,这意味着它只会响应 POST 请求。删除该属性,您的操作就会起作用。这ValidateAntiForgeryToken
也不需要,它是用于表单的。
注:我不再坚持原来的答案。尽管它解决了当前的问题,但注销实际上应该是 POST,因为浏览器预取 https://stackoverflow.com/a/14587231/247702 and 潜在的恶意行为 https://stackoverflow.com/a/3522013/247702。因此,不应使用超链接,而应该有一个带有超链接样式的提交按钮的表单。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)