带有特殊字符的动态网址将我重定向到404页面

时间:2013-07-22 21:04:29

标签: asp.net-mvc url deployment special-characters urlencode

我有一个webform应用程序,当你登录时带我到我的MVC应用程序的主页。在登录过程中,我正在形成一个网址,将我带到我的MVC应用程序。在此URL中,我附加了加密的用户ID。问题是此加密的用户标识包含特殊字符,如“+”或“/”。它搞砸了,把我带到了404页面。如果没有特殊字符,那么它工作正常并带我到正确的页面。

这是我如何形成网址

 Response.Redirect("http://mysite/UserRedirect/" + encryptedUserId)

MVC方法

 [HttpGet]
 public ActionResult UserRedirect(string id = "")
 {
   //Decrypts UserID, then takes you to the homepage         
     return("Index");
 }

如果encryptedUserId包含如下例所示的特殊字符,则会混乱。

7hnQ+Nc= -> http://mysite/UserRedirect/7hnQ+Nc= ("+" sign)

 E/VDb7l= -> http://mysite/UserRedirect/E/VDb71 ("/" sign)

否则如果没有像下面这样的特殊字符,那么它可以正常工作

NIatmgg= -> http://mysite/UserRedirect/NIatmgg=

在服务器上部署应用程序时会出现此问题。我该怎么做呢?

当有“/”时,它甚至没有进入我的UserRedirect方法。 感谢

2 个答案:

答案 0 :(得分:1)

结果表明你需要用“?=”而不是斜杠“/”来形成网址。这现在有效。感谢

答案 1 :(得分:0)

您确定在重定向调用之前编码(通过UrlEncode)encryptedUserId变量并在UserRedirect操作中解码(通过UrlDecode)id变量吗?