Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .Net MVC4重定向到操作未按预期工作_C#_Asp.net_.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# .Net MVC4重定向到操作未按预期工作

C# .Net MVC4重定向到操作未按预期工作,c#,asp.net,.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,.net,Asp.net Mvc,Asp.net Mvc 4,这可能是一个愚蠢的问题,但似乎RedirectToAction()无法正常工作 我有一个管理员控制器作为一个单独的区域,我有一个注销任务方法,我只是想让方法在注销时重定向到网站索引,但是它会把我带到管理路径下的一个url,我不知道为什么,因为我调用了这个方法,给它控制器名和控制器内的操作方法名。 相反,我要做的是: 我做错什么了吗 [Route("logout")] public async Task<ActionResult> Logout() {

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

我有一个管理员控制器作为一个单独的区域,我有一个注销任务方法,我只是想让方法在注销时重定向到网站索引,但是它会把我带到管理路径下的一个url,我不知道为什么,因为我调用了这个方法,给它控制器名和控制器内的操作方法名。 相反,我要做的是:

我做错什么了吗

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

        authManager.SignOut();

        return RedirectToAction("index", "home");
    }
[路由(“注销”)]
公共异步任务注销()
{
var authManager=HttpContext.GetOwinContext().Authentication;
authManager.SignOut();
返回重定向到操作(“索引”、“主页”);
}

尝试使用
返回重定向到操作(“索引”、“主页”)。据我所知,所有这些
Redirect*
RedirectTo*
方法都是区分大小写的

如果未指定,则路由值在调用之间保持不变。由于您位于管理区域,并且没有在
重定向到操作
方法中指定区域,因此路由引擎保留对管理区域的引用

要解决此问题,您可以:

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

返回重定向到操作(“Index”,new{controller=“Home”,area=string.Empty})

不,不幸的是,这不起作用,它仍然把我带到管理员/家庭也许这是因为
Admin/Home
是你的默认路线?当您注销时,它会重定向到它,因为您无法访问
主页/索引
?您是否在
Home
控制器或
Index
方法
Home
控制器上使用了
AuthorizeAttribute
。默认情况下,这些方法不区分大小写。我想可能有一些配置设置,但不是现成的仅供参考。PS,不是大声喊叫,只是想在非部分找到焦点。:)