未找到路径'/ Account / Login'的控制器或未实现IController

时间:2016-02-19 21:44:43

标签: c# asp.net-mvc

..但我没有登录控制器!

当我抛出自定义错误时,我得到它。

我的意思是..是的。我从一个有一个的示例项目开始我的项目,我删除了帐户控制器,它的视图,甚至任何引用“登录”的代码(甚至web.config中可能提到它的任何条目)和它出现了这个错误。

我还能在哪里检查?

更新:我使用的是Active Directory而不是登录表单。

5 个答案:

答案 0 :(得分:1)

只需将这些行添加到您的网络配置文件中:

<authentication mode="Forms">
  <forms loginUrl="~/home/Login" timeout="2880"></forms>
</authentication>

在loginUrl中输入正确的登录页面目的地,它将重定向所有标记为[授权]的请求,而不是帐户/登录。

答案 1 :(得分:1)

确定。所以我的问题似乎是因为我使用的是自定义[Authorize]属性,而且我没有登录页 。我正在使用Active Directory。

根据@Lars&amp; @Shani,显然我需要以某种方式指回一个。

不幸的是,我没有,因为我没有,所以创建一个也没用。所以我提出了一种适合我情况的方法。在我的自定义[Authorize]属性中,我返回了RedirectToRouteResult进入我的自定义错误页面:

 protected override void HandleUnauthorizedRequest(System.Web.Mvc.AuthorizationContext filterContext)
    {
        base.HandleUnauthorizedRequest(filterContext);

        if (!_authorized)
        {
            filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
            {
                controller = "ErrorPage",
                action = "Unauthorized"
            }));
        }
    }

我确定有几种不同的方法可以做到这一点,但这就是我现在要做的事情。

答案 2 :(得分:0)

全局搜索@ Html.Action(“Login”,“AccountController”)并删除它。

可能有些视图仍然在AccountController中引用了Login方法。

答案 3 :(得分:0)

检查是否有任何控制器类或操作上面有[Authorize]属性。

如果用户请求存在属性的操作,如果他们尚未登录,则会将其重定向到登录页面。但如果您没有登录页面(如果您没有需要用户登录)然后你不应该使用这个属性。

答案 4 :(得分:0)

如果您的应用配置为使用表单以外的身份验证机制,如 WIF,请尝试从配置中删除表单身份验证模块。

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
       <remove name="FormsAuthentication" />
相关问题