Asp.net mvc 4 将操作重定向到同一区域内的另一个控制器

Asp.net mvc 4 将操作重定向到同一区域内的另一个控制器,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc 4,Asp.net Mvc Routing,我正在尝试让我的站点在成功登录时运行重定向。我将所有会员路线都保留在一个区域内 /membership/login/index /membership/profile/index 我已经尝试了以下两种方法来实现这一点——登录成功,但重定向除了更改地址之外什么都不做。我试过以下方法,但结果都一样 [HttpPost] public ActionResult Index(Login loginViewModel) { ... return RedirectToRoute(new {

我正在尝试让我的站点在成功登录时运行重定向。我将所有会员路线都保留在一个区域内

/membership/login/index
/membership/profile/index
我已经尝试了以下两种方法来实现这一点——登录成功,但重定向除了更改地址之外什么都不做。我试过以下方法,但结果都一样

[HttpPost]
public ActionResult Index(Login loginViewModel)
{
    ...
    return RedirectToRoute(new { Area = "Membership", 
               Controller = "Profile", Action="Index" });
}
结果是

http://mysite.com/Membership/Login?ReturnUrl=%2fmembership%2fProfile
那么我的下一个努力

return RedirectToAction("Index", "Profile", new { Area = "Membership" });
....
http://mysite.com/Membership/Login?ReturnUrl=%2fmembership%2fProfile
最后

return RedirectToAction("Index", "Profile");
... 
http://mysite.com/Membership/Login?ReturnUrl=%2fmembership%2fProfile

您当然可以重定向HTTP post(您不能做的是重定向它,然后期望重定向的响应也是post)。这里发生的情况是,您正在成功地将请求重定向到正确的页面,但所涉及的页面需要身份验证,并且由于用户未经身份验证,因此请求将再次发送回登录页面。您应该在设置cookie后执行重定向(或者执行您正在执行的任何身份验证机制)

您必须在重定向前保存coockies

FormsAuthentication.SetAuthCookie("UserName or somthing",false/true);
return RedirectToAction("Index", "Profile", new { Area = "Membership" });

现在它可以工作了。

HTTPPOST无法重定向。但我不知道解决办法,除了把它改成GET。如果您将其更改为
HttpGet
,会发生什么?谢谢,很高兴知道,我不太了解http的详细信息,尽管您的登录似乎不成功。您一直都在重新重定向回登录。你能展示你的ActionResult的完整代码吗?我已经调试过了,示例中的代码肯定正在执行中,这很有意义,会在早上试一试。确实如此,身份验证工作不正常