我熟悉asp.net mvc,Identity并尝试简单注销但得到The resource cannot be found.
在我的html页面
<li><a href="@Url.Action("LogOff", "Account")" id="home">Log off</a></li>
,这是在AccountController
中 [HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
AuthenticationManager.SignOut();
return RedirectToAction("Index", "Home");
}
这在我的路线配置文件中
routes.MapRoute(
null,
"LogOff",
new { controller = "Account", action = "LogOff" }
我能错过什么?
答案 0 :(得分:3)
从[HttpPost]
方法
LogOff
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
AuthenticationManager.SignOut();
return RedirectToAction("Index", "Home");
}
答案 1 :(得分:2)
简单地删除HttpPost
public ActionResult LogOff()
{
AuthenticationManager.SignOut();
return RedirectToAction("Index", "Home");
}
适合我
答案 2 :(得分:2)
使用post方法注销。请参阅以下示例。
@using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" })) {
@Html.AntiForgeryToken()
<a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
}
答案 3 :(得分:2)
默认情况下,当您使用某些身份验证创建项目时,它会使用LogOff
属性创建HttpPost
方法。
所以你有两种方法来解决它
首先一个是删除此属性。让你的代码看起来像
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
AuthenticationManager.SignOut();
return RedirectToAction("Index", "Home");
}
第二一个是将html更改为使用POST方法docs here使用@Html.BeginForm
。
默认项目使用第二种类型的实现
修改强> 当我输入这个答案 Rad 时,给出一个示例如何使用BeginForm助手here it is