..但我不是有登录控制器!未找到路径“/ Account/Login”的控制器或未实施IController
我得到它时,我抛出自定义错误。
我的意思是......是的。我从一个有示例项目的示例项目开始我的项目,并删除了帐户控制器,其视图,甚至任何引用“登录”的代码(甚至可能提及它的web.config中的任何条目),以及它出现这个错误。
我会在哪里检查?
更新:我正在使用Active Directory而不是登录表单。
..但我不是有登录控制器!未找到路径“/ Account/Login”的控制器或未实施IController
我得到它时,我抛出自定义错误。
我的意思是......是的。我从一个有示例项目的示例项目开始我的项目,并删除了帐户控制器,其视图,甚至任何引用“登录”的代码(甚至可能提及它的web.config中的任何条目),以及它出现这个错误。
我会在哪里检查?
更新:我正在使用Active Directory而不是登录表单。
好的。所以看起来我的问题是因为我正在使用自定义[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"
}));
}
}
我敢肯定有几种不同的方式来做到这一点,但是这是我与去此刻此刻..
我很高兴你解决了这个问题。这似乎是您使用AD登录进行当前设置的一个很好的解决方案。 –
对@ Html.Action(“Login”,“AccountController”)进行全局搜索并删除它。
可能有些视图仍然引用AccountController中的Login方法。
只需添加到您的Web配置文件这些行:
<authentication mode="Forms">
<forms loginUrl="~/home/Login" timeout="2880"></forms>
</authentication>
在loginUrl输入正确的登录页面的目标,它会重定向所有标记的请求[授权]那里,而不是账户/登录。
检查任何控制器类别或操作是否具有[Authorize]
以上的属性。
如果用户请求某个动作的属性存在,他们将被重定向到一个登录页面,如果他们还没有登录。但是如果你没有登录页面(如果你不' t需要用户登录),那么你不应该使用这个属性。
检查web.config。等一下!做一个解决方案级别搜索“登录” – Shyju
试过。没有运气.. – Kevin
清理你的解决方案。删除临时文件。重新启动VS – Shyju