首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MVC 4- LogOff控制器操作未找到404

MVC 4- LogOff控制器操作未找到404
EN

Stack Overflow用户
提问于 2013-04-16 01:14:35
回答 3查看 15.9K关注 0票数 17

我刚刚完成了一个大学项目,我不确定我是否盯着我的电脑看了太久,错过了一些明显的东西,但当我试图注销一个用户时,我得到了一个404 not found for the URL /Account/LogOff。

我有一个导航栏,它根据用户是、已登录还是已注销来显示登录/注销:

代码语言:javascript
运行
复制
<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>

在我的帐户控制器中,互联网模板附带的默认LogOff操作:

代码语言:javascript
运行
复制
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
    WebSecurity.Logout();

    return View("Index");
}

谁能告诉我为什么会这样--在我把笔记本电脑扔到墙上之前。干杯。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-16 01:16:22

您使用一个链接(<a/>标记)注销,当用户单击它时会产生HTTP GET请求,但是您的操作仅限于服务于POST请求(因为它用[HttpPost]属性修饰)。

您需要将链接放入表单并生成POST请求,或者从您的操作中删除[HttpPost][ValidateAntiForgeryToken] (致谢于GalacticCowboy)。

票数 41
EN

Stack Overflow用户

发布于 2013-04-16 04:54:45

因为注销会修改服务器状态,所以我不会删除HttpPost和ValidateAntiForgeryToken,而是将链接(锚标记)替换为以下内容

代码语言:javascript
运行
复制
@using (Html.BeginForm("Log Out", "Account", FormMethod.Post,
 new { id = "logoutForm" }))
{

    @Html.AntiForgeryToken()
    <a href="javascript:document.getElementById('logoutForm').submit()">Log Out</a>

}
票数 34
EN

Stack Overflow用户

发布于 2017-05-19 03:10:28

我在一个遗留应用上遇到了这个问题。我修复它的方法是检测何时提供的返回Url是'/Account/LogOff‘,并采取相应的操作。在'AccountController.cs‘文件中,'Login’方法:

代码语言:javascript
运行
复制
if (returnUrl == "/Account/LogOff")
    {
        return this.RedirectToLocal(null);
    }
    else
    {
        return this.RedirectToLocal(returnUrl);  
    }    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16020955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档