使用波浪号(〜)符号从URL获取完整URL

时间:2012-02-01 07:52:20

标签: c# asp.net

我正在尝试使用波形符号(&#39;〜&#39;)来获取一个典型的asp.net网址,以解析为以&#34; http:&#34; <开头的完整网址/ p>

我有这个字符串&#34;〜/ PageB.aspx&#34;

我想让它成为&#34; http://myServer.com/PageB.aspx&#34;

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

4 个答案:

答案 0 :(得分:73)

试试

System.Web.VirtualPathUtility.ToAbsolute("yourRelativePath"); 

ASP.NET中有多种方法可用于解析服务器端资源的相对路径,并使其在客户端可用。我知道4种方式 -

 1) Request.ApplicationPath
 2) System.Web.VirtualPathUtility
 3) Page.ResolveUrl
 4) Page.ResolveClientUrl

好文章:Different approaches for resolving URLs in ASP.NET

答案 1 :(得分:18)

如果您在页面处理程序中,则可以始终使用ResolveUrl方法将相对路径转换为特定于服务器的路径。但如果你想要&#34; http://www.yourserver.se"除此之外,您还必须在其前加Request.Url.SchemeRequest.Url.Authority

答案 2 :(得分:9)

string.Format("http://{0}{1}", Request.Url.Host, Page.ResolveUrl(relativeUrl));

答案 3 :(得分:5)

这种方法对我来说是最好的。没有字符串操作,它可以容忍相对或绝对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;
}