我有一部分网址如下:
"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
答案 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");