response.redirect使用〜路径

问题描述 投票:0回答:2

这不起作用。 我的假设是ASP.NET会自动将URL解析到正确的路径中。 通常,我只会使用

Response.Redirect("../Login.aspx?ReturnPath=" + Request.Url.ToString());

但此代码在主页上,可以从任何文件夹级别执行。  我如何解决这个问题?
    

我认为您需要放下“〜/”,然后用“/”替换它,我相信/是root

c# asp.net response.redirect
2个回答
77
投票
:-)除非您要进行编码Web应用程序,以便它只能安装在网站的根部。

“〜/”

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));

在解决之后添加参数。
    

使用

0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.