将路径转换为绝对URL

时间:2014-06-30 10:24:20

标签: c# asp.net url

我有一部分网址如下:

"employee/employeeDetail.aspx"

整个网址的基本路径是:

"example.com/siteName"

所需的输出应为:

"http://www.example.com/siteName/employee/employeeDetail.aspx"

我试过以下内容:

page.ResolveClientUrl(@"/employee/employeeDetail.aspx");

但结果是

"/employee/employeeDetail.aspx"

而不是组合两个字符串,即

string baseURL = @"example.com/siteName";
string relativeURL = @"employee/employeeDetail.aspx";
string finalURL = baseURL + relativeURL;

还有其他更好的方法来形成网址吗?


我尝试在baseURL之前添加~

page.ResolveClientUrl(@"~/employee/employeeDetail.aspx");

但结果是

../employee/employeeDetail.aspx

3 个答案:

答案 0 :(得分:2)

通常,最好看看传入的请求并从中构建...

var ub = new UriBuilder(Request.Url);
var someNewPath = HostingEnvironment.MapPath("~/app/relative/path");
ub.Path = someNewPath;
ub.Query = perhapsAQueryString;
var absoluteUri = ub.Uri;

...但有时当你在负载均衡器后面时,事情可能会变得更复杂,你必须查看负载均衡器添加的标题,例如X-REQUESTED-FOR

答案 1 :(得分:1)

您需要通过在开头添加~来告诉方法您的网址与应用程序根路径是相对的:

page.ResolveClientUrl(@"~/employee/employeeDetail.aspx");

如果您不这样做,它将被解析为来自您的网络服务器根目录的绝对路径。

答案 2 :(得分:1)

您错过了'~'符号

代字号(〜)表示根。

page.ResolveClientUrl(@"~/employee/employeeDetail.aspx");
相关问题