我认为你需要go 掉"~/",改成"/",我相信/是词根
STOP RIGHT THERE!:-)除非你想硬编码你的web应用程序,这样它只能安装在网站的根目录下.
"~/"is正确使用的东西,但原始代码没有按预期工作的原因是ResolveUrl
(Redirect
在内部使用)试图首先确定您传递的路径是否是绝对URL(例如"**http://server/**foo/bar.htm"而不是"foo/bar.htm")——但不幸的是,它只是通过在您提供的URL中查找冒号":"来实现这一点.但在本例中,它会在您在ReturnPath
查询字符串值中给出的URL中找到一个冒号,这愚弄了它——因此您的"~/"无法解析.
解决方法是,您应该使用URL编码ReturnPath
个值,该值将有问题的":"以及其他特殊字符转义.
Response.Redirect("~/Login.aspx?ReturnPath=" + Server.UrlEncode(Request.Url.ToString()));
此外,我建议你(或任何人)永远不要使用Uri.ToString
,因为它提供了一个可读性更强、更"友好"的URL版本,而不一定是正确的(它会让事情变得不那么简单).而是使用Uri.绝对的,绝对的
Response.Redirect("~/Login.aspx?ReturnPath=" + Server.UrlEncode(Request.Url.AbsoluteUri));