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

Daa*_*win 47 c# asp.net

我试图得到一个典型的asp.net url,以波形符号('〜')开头,解析成一个完整的网址,以"http:"开头

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

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

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

Pra*_*ana 74

试用

System.Web.VirtualPathUtility.ToAbsolute("yourRelativePath"); 
Run Code Online (Sandbox Code Playgroud)

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

 1) Request.ApplicationPath
 2) System.Web.VirtualPathUtility
 3) Page.ResolveUrl
 4) Page.ResolveClientUrl
Run Code Online (Sandbox Code Playgroud)

好文章:在ASP.NET中解析URL的不同方法


A. *_*per 18

如果您在页面处理程序中,则始终可以使用该ResolveUrl方法将相对路径转换为特定于服务器的路径.但是如果你想在"http://www.yourserver.se"部分藏汉,你必须预先考虑Request.Url.Scheme,并Request.Url.Authority给它.


小智 9

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


小智 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;
}
Run Code Online (Sandbox Code Playgroud)