How can I consistently get the absolute, fully-qualified root or base url of the site regardless of whether the site is in a virtual directory and regardless of where my code is in the directory structure? I've tried every variable and function I can think of and haven't found a good way.
I want to be able to get the url of the current site, i.e. http://www.example.com or if it's a virtual directory, http://www.example.com/DNN/
Here's some of the things I've tried and the result. The only one that includes the whole piece that I want (http://localhost:4471/DNN441) is Request.URI.AbsoluteURI:
In reading through the answer provided in Rick Strahl's Blog I found what I really needed was quite simple. First you need to determine the relative path (which for me was the easy part), and pass that into the function defined below:
VB.NET
Public Shared Function GetFullyQualifiedURL(ByVal s as string) As String
Dim Result as URI = New URI(HttpContext.Current.Request.Url, s)
Return Result.ToString
End Function
C#
public static string GetFullyQualifiedURL(string s) {
Uri Result = new Uri(HttpContext.Current.Request.Url, s);
return Result.ToString();
}
The accepted answer assumes that the current request is already at the server/virtual root. Try this:
Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With