2016-02-19 90 views
1

..但我不是登录控制器!未找到路径“/ Account/Login”的控制器或未实施IController

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

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

我会在哪里检查?

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

+1

检查web.config。等一下!做一个解决方案级别搜索“登录” – Shyju

+0

试过。没有运气.. – Kevin

+0

清理你的解决方案。删除临时文件。重新启动VS – Shyju

回答

1

好的。所以看起来我的问题是因为我正在使用自定义[Authorize]属性,并且我没有登录页面,因此完全没有。我正在使用Active Directory。

根据@Lars & @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" 
      })); 
     } 
    } 

我敢肯定有几种不同的方式来做到这一点,但是这是我与去此刻此刻..

+0

我很高兴你解决了这个问题。这似乎是您使用AD登录进行当前设置的一个很好的解决方案。 –

0

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

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

1

只需添加到您的Web配置文件这些行:

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

在loginUrl输入正确的登录页面的目标,它会重定向所有标记的请求[授权]那里,而不是账户/登录。

0

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

如果用户请求某个动作的属性存在,他们将被重定向到一个登录页面,如果他们还没有登录。但是如果你没有登录页面(如果你不' t需要用户登录),那么你不应该使用这个属性。

+0

它如何知道登录页面重定向? – Kevin

+0

如果我没有记错,除非在web.config中输入了另一个操作,否则MVC会自动重定向到“〜/ Account/Login /”。 –

+0

拉尔斯,你有没有任何链接可能会给你一些重要的原因,如果我没有登录页面,我不应该使用该属性?我正在使用Active Directory。只是域中的某些用户未被授权。我使用自定义的授权属性将它们除去,如果它们不允许进入,则在AuthorizeCore中返回false。 – Kevin

相关问题