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

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

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

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

我还能在哪里检查?

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

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

    

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

好。 所以看起来我的问题是因为我使用自定义[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" })); } } 

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

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

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

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

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