returnUrl重定向到错误的页面

时间:2017-11-07 15:26:34

标签: c# asp.net asp.net-mvc

出于某种原因,我的应用程序在重定向回到returnUrl(通过AccountController登录操作)时一直试图找到Home Controller,即使我已将我的HomeController更改为DashboardController以及更改了我的RouteConfig.cs < / p>

namespace application
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
}

当我的应用程序启动时,由于控制器中的[Authorize]属性,它会自动重定向到帐户/登录视图。但是当我输入Account / Login到我的Url时,returnUrl在GET操作中变得等于“/”,并且在登录时我收到404错误,因为它找不到HomeController Index View(实际上是DashboardController索引视图)。

我需要更改哪些内容才能使我的应用程序不再搜索家庭控制器?

2 个答案:

答案 0 :(得分:2)

我的问题的解决方案是帐户控制器RedirectToLocal操作重定向到Home Controller Index Action,因此我不得不将其更改为Dashboard Controller Index Action。

private ActionResult RedirectToLocal(string returnUrl)
    {
        if (Url.IsLocalUrl(returnUrl))
        {
            return Redirect(returnUrl);
        }
        return RedirectToAction("Index", "Dashboard");
    }

答案 1 :(得分:1)

该控制器操作通常会在“〜/ Views / Dashboard”文件夹中查找文件Index.cshtml。如果您没有将“〜/ Views / Home”文件夹重命名为“〜/ Views / Dashboard”,则控制器将查找该文件的错误位置,并且无法找到它,因此产生404错误。