使用波浪号(〜)标记从URL获取完整url

我试图得到一个典型的asp.neturl开始与波浪符号('〜')parsing成一个完整的确切的URL以“http:”开始

我有这个string“〜/ PageB.aspx”

我想使它成为“ http://myServer.com/PageB.aspx ”

我知道有几种方法来parsingURL和获得不同的服务器和应用程序path等。 我尝试了几个,但没有得到我想要的结果。

如果您处于页面处理程序中,则始终可以使用ResolveUrl方法将相对path转换为特定于服务器的path。 但是,如果您想要“http://www.yourserver.se”部分,则必须在其中添加;Request.Url.SchemeRequest.Url.Authority

试用

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

在ASP.NET中有各种可用的方法,我们可以使用它们来parsing服务器端资源的相对path,并使其在客户端可用。 我知道4种方式 –

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

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

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

这个方法对我来说是最好的。 没有string操作,它可以容忍相对或绝对URL作为input,它使用与当前请求使用的完全相同的scheme,权限,端口和根path:

 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; }