从带有波浪号(~)的URL获取完整URL
本文关键字:URL 获取 | 更新日期: 2023-09-27 18:22:17
我正试图获得一个以波浪号('~')开头的典型asp.net url,以解析为一个以"http:"开头的完全准确的url
我有这个字符串"~/PageB.aspx"
我想让它变成"http://myServer.com/PageB.aspx"
我知道有几种方法可以解析url,并获得服务器和应用程序的不同路径等等。我试了好几次,但都没有得到我想要的结果。
试用
System.Web.VirtualPathUtility.ToAbsolute("yourRelativePath");
ASP.NET中有多种可用的方法,我们可以使用这些方法来解析服务器端资源的相对路径,并使其在客户端可用。我知道4种方法-
1) Request.ApplicationPath
2) System.Web.VirtualPathUtility
3) Page.ResolveUrl
4) Page.ResolveClientUrl
好文章:在ASP.NET 中解析URL的不同方法
如果您在页面处理程序中,您可以始终使用ResolveUrl
方法将相对路径转换为特定于服务器的路径。但是,如果您也想要"http://www.yourserver.se"部分,则必须为其准备Request.Url.Scheme
和Request.Url.Authority
。
string.Format("http://{0}{1}", Request.Url.Host, Page.ResolveUrl(relativeUrl));
这个方法对我来说是最好的。没有字符串操作,它可以容忍相对或绝对的URL作为输入,并且它使用与当前请求使用的完全相同的方案、权限、端口和根路径:
private Uri GetAbsoluteUri(string redirectUrl)
{
var redirectUri = new Uri(redirectUrl, UriKind.RelativeOrAbsolute);
if (!redirectUri.IsAbsoluteUri)
{
redirectUri = new Uri(new Uri(Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath), redirectUri);
}
return redirectUri;
}