C# .Net MVC4重定向到操作未按预期工作
这可能是一个愚蠢的问题,但似乎RedirectToAction()无法正常工作 我有一个管理员控制器作为一个单独的区域,我有一个注销任务方法,我只是想让方法在注销时重定向到网站索引,但是它会把我带到管理路径下的一个url,我不知道为什么,因为我调用了这个方法,给它控制器名和控制器内的操作方法名。 相反,我要做的是: 我做错什么了吗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() {
[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,不是大声喊叫,只是想在非部分找到焦点。:)