2011-03-23 25 views
1

我有一个带HTML浏览器的flex应用程序。使用浏览器和.net MVC的Flex应用程序RedirectToAction == BadRequest

每当我尝试登录到我的.NET 4 MVC 3应用程序我重定向到URL这样的:

http://dev.example.com/(F(pvQgwsX3QvLrI1tN0JENknfz27yN7H00FCaLw_N06qL_SvBGmbS9Mc8V9BIlergVUhGiLeg-JU5HnEE-fzXtWqtVq-S5Pk393AXbifUTmcH29sDF9e028kpbYbX8L-VOY75QXYzXHTDfb06ozuOJzPvPB-y8atHn2B3BoDyiZMBd3DCjdO4meTwp9kvNY6ZarXbFByTU932Hu95lRcTq6yJzQ8y5Ree28nqgjqVHKEV77noegweTKkZ0_5IUZYnE0))/someDirectory 

,这只是发生在Flex浏览器(Adobe空气2.6)时。使用常规的网络浏览器登录没问题。

登录代码如下:

[HttpPost] 
    [ActionName("sign-in")] 
    public ActionResult Signin(SignInModel model, string returnUrl) 
    { 
     if (ModelState.IsValid) 
     { 
      if (MembershipService.ValidateUser(model.Email, model.Password)) 
      { 
       FormsService.SignIn(model.Email, model.RememberMe); 
       if (Url.IsLocalUrl(returnUrl) && false) 
       { 
        return Redirect(returnUrl); 
       } 
       else 
       { 
        return RedirectToAction("Index", "admin"); 
       } 
      } 
      else 
      { 
       ModelState.AddModelError("", "The user name or password provided is incorrect."); 
      } 
     } 

     // If we got this far, something failed, redisplay form 
     return View("signin", model); 
    } 

任何知道该网址,以及如何得到它的工作?

回答

1

当浏览器不支持cookies或者它们已被关闭时,ASP.NET使用此URL。它没有特定于ASP.NET MVC。由于没有cookie,身份验证令牌会在url中发送以跟踪登录的用户。

+1

显然.NET只是猜测哪个userAgents支持Cookie。更改userAgent字符串可以解决问题。 – 2011-03-23 17:05:49

2

就在一时兴起,我决定将flex浏览器的用户代理更改为Chrome和中提琴使用的代理! - 有用。

显然,.net或MVC 3不喜欢flex的userAgent字符串,并决定去掉url。它可能是试图设置无cookie会话或其他东西(我的应用程序没有设置)。

因此,这里是我的新工作的用户代理字符串:

Mozilla/5.0 (Windows NT 5.1) AppleWebKit/531.9 (KHTML, like Gecko) Chrome/11.0.696.16 Safari/534.24 
+0

接受你自己的答案。 – 2011-03-23 19:55:23

+0

@J_A_X,您不能在问题发布后的两天内接受自己回答的答案。 – 2011-03-23 19:56:54

+0

对不起。只是提醒一下:P – 2011-03-23 20:03:36

相关问题