3

QueryString パラメータを複製している retunUrl に問題があります。

私のURLは次のようなものです:

"www.mysite.com/Order/?id=1&item=123"

次に、ログイン ページにリダイレクトすると、URL は次のようになります。

"www.mysite.com/login/RedirectUrl=/Order? id=1&item=123&id=1&item=123 "

ユーザーのログイン後、アクションは次の場所にリダイレクトされます。

"www.mysite.com/Order/? id=1&item=123&id=1&item=123"

私のページで Request.QueryString["id"] を使用すると、クエリ文字列「ID」が重複しているため、エラーが発生しました。

私のログイン アクション コードは次のようになります。

[HttpPost]
[AllowAnonymous]
public ActionResult Index(LoginModel model, string ReturnUrl)
{
    if(VerifyLogin(model))
    {
       if(ReturnUrl != null)
          return Redirect(ReturnUrl);//redirect to url with duplicated parameters
       else
          return Redirect("/Home");
    }
    else
    {
       ModelState.AddModelError("", "Invalid Username or Password");
    }

   return View();
}

どうすればこの問題を解決できますか?

4

1 に答える 1

0

I think problem is in Order controller or ReturnUrl assignment logic. It might adding url+queryString. If yes you can try something like Request.Url.GetLeftPart(UriPartial.Path) + queryString

于 2013-09-04T04:32:01.537 に答える