这不起作用。 我的假设是ASP.NET会自动将URL解析到正确的路径中。 通常,我只会使用
Response.Redirect("../Login.aspx?ReturnPath=" + Request.Url.ToString());
但此代码在主页上,可以从任何文件夹级别执行。 我如何解决这个问题?
我认为您需要放下“〜/”,然后用“/”替换它,我相信/是root
IS“〜/”
可以使用正确的东西,但是您的原始代码无法正常工作的原因是,ResolveUrl
Redirect
内部使用)试图首先解决您经过的路径是绝对的URL(例如“ ** Http://server/thttp://**foo/bar.htm”,而不是“ foo/bar.htm”) - 但不幸的是,它可以简单地做到这一点在URL中寻找结肠角色':'您给它。但是在这种情况下,它在您在
ReturnPath
查询字符串值中给出的URL中找到了一个结肠,这使它愚弄了 - 因此您的'〜/'无法解决。
修复程序是,您应该在编码url url condy the有问题的':'以及其他任何特殊字符的值。
ReturnPath
additiondition,我建议您(或任何人)永远不会使用Response.Redirect("~/Login.aspx?ReturnPath=" + Server.UrlEncode(Request.Url.ToString()));
- 因为它给出了人类可读,更友好的URL版本,而不是一定是正确的(它可以使事物)正确。而是使用uri.absoluteuri-喜欢:
Uri.ToString
您可以首先解决URL
Response.Redirect("~/Login.aspx?ReturnPath=" + Server.UrlEncode(Request.Url.AbsoluteUri));
在解决之后添加参数。
使用