【问题标题】:.Net MVC4 redirect to action not working as expected.Net MVC4 重定向到操作未按预期工作
【发布时间】:2016-01-01 00:45:04
【问题描述】:

这可能是一个愚蠢的问题,但似乎 RedirectToAction() 无法正常工作。

我有一个管理控制器作为一个单独的区域完成,我有一个注销任务方法,我只是试图让方法在注销时重定向到网站索引,但它把我带到了下面的 url相反,我不知道为什么要调用该方法,并在该控制器中为其提供控制器名称和操作方法名称。 相反,它需要我: http://localhost:63374/Admin/Home

是不是我做错了什么?

        [Route("logout")]
    public async Task<ActionResult> Logout()
    {
        var authManager = HttpContext.GetOwinContext().Authentication;

        authManager.SignOut();

        return RedirectToAction("index", "home");
    }

【问题讨论】:

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


    【解决方案1】:

    如果未指定,路由值将在调用之间保持不变。由于您在管理区域并且没有在 RedirectToAction 方法中指定区域,因此路由引擎会保留对管理区域的引用。

    要解决此问题,您可以:

    • 将您的注销操作移到管理区域之外,或者,
    • 通过将区域设置为空字符串,指定RedirectToAction 应在当前区域之外找到控制器。

    return RedirectToAction("Index", new{controller="Home", area=string.Empty});

    【讨论】:

      【解决方案2】:

      尝试使用return RedirectToAction("Index", "Home");。据我所知,所有这些Redirect*RedirectTo* 方法都区分大小写

      【讨论】:

      • 不,可悲的是不起作用,它仍然需要我到 Admin/Home
      • 可能是因为Admin/Home 是您的默认路由?当您退出时,它会重定向到它,因为您无权访问Home/Index?你是在Home 控制器上使用AuthorizeAttribute 还是在Home 控制器上使用Index 方法
      • 这些方法默认情况下区分大小写。我认为可能有一些配置设置,但不是开箱即用的。 PS,不是大喊大叫,只是想在非部分上找到一个焦点。 :)
      猜你喜欢
      • 1970-01-01
      • 2015-03-15
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多