c# - MVC 4 - 未找到 404 的注销 Controller 操作

标签 c# asp.net-mvc asp.net-mvc-4 http-status-code-404

我刚刚结束了一个大学项目,我不确定我是否盯着我的电脑看得太久而遗漏了一些明显的东西,但是当我尝试注销一个用户时,我得到了找不到 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/

相关文章:

jquery - 从 jquery 调用 MVC 操作并处理重定向或返回的部分 View

c# - 复选框状态始终作为 null 传递给 Controller

asp.net-mvc-3 - 为什么我必须在 mvc 的每个部分页面中调用或声明 jquery.validate.unobtrusive.min.js

c# - 我需要用更紧凑的东西替换 C# 开关

c# - 如何强制 XAMARIN 应用仅使用 WIFI

.net - 如何创建 bool 编辑器模板? (.EditorFor<>)

c# - asp.net mvc razor foreach循环将id添加到div

asp.net-mvc-4 - 如何为 Outlook 创建 "internet calendar subscription"?

c# - C# 中使用 ReadOnlySpan 进行泛型类型推断

c# - RazorEngine 和 EF 5 或 6