I am trying to get a typical asp.net url starting with the tilde sign (‘~’) to parse into a full exact url starting with “http:”
I have this string “~/PageB.aspx”
And i want to make it become “http://myServer.com/PageB.aspx“
I know there is several methods to parse urls and get different paths of server and application and such. I have tried several but not gotten the result i want.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Try out
System.Web.VirtualPathUtility.ToAbsolute("yourRelativePath");
There are various ways that are available in ASP.NET that we can use to resolve relative paths to a resource on the server-side and making it available on the client-side. I know of 4 ways –
1) Request.ApplicationPath 2) System.Web.VirtualPathUtility 3) Page.ResolveUrl 4) Page.ResolveClientUrl
Good article : Different approaches for resolving URLs in ASP.NET
Method 2
If you’re in a page handler you could always use the ResolveUrl method to convert the relative path to a server specific path. But if you want the “http://www.yourserver.se” part aswell, you’ll have to prepend the Request.Url.Scheme and Request.Url.Authority to it.
Method 3
string.Format("http://{0}{1}", Request.Url.Host, Page.ResolveUrl(relativeUrl));
Method 4
This method looks the nicest to me. No string manipulation, it can tolerate both relative or absolute URLs as input, and it uses the exact same scheme, authority, port, and root path as whatever the current request is using:
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;
}
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0