从带有波浪号(~)的URL获取完整URL

本文关键字:URL 获取 | 更新日期: 2023-09-27 18:22:17

我正试图获得一个以波浪号('~')开头的典型asp.net url,以解析为一个以"http:"开头的完全准确的url

我有这个字符串"~/PageB.aspx"

我想让它变成"http://myServer.com/PageB.aspx"

我知道有几种方法可以解析url,并获得服务器和应用程序的不同路径等等。我试了好几次,但都没有得到我想要的结果。

从带有波浪号(~)的URL获取完整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.SchemeRequest.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;
}