我有一个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方法。 感谢
答案 0 :(得分:1)
结果表明你需要用“?=”而不是斜杠“/”来形成网址。这现在有效。感谢
答案 1 :(得分:0)
您确定在重定向调用之前编码(通过UrlEncode)encryptedUserId变量并在UserRedirect操作中解码(通过UrlDecode)id变量吗?