28

I have a base URL :

http://my.server.com/folder/directory/sample

And a relative one :

../../other/path

How to get the absolute URL from this ? It's pretty straighforward using string manipulation, but I would like to do this in a secure way, using the Uri class or something similar.

It's for a standard a C# app, not an ASP.NET one.

2 Answers 2

50
var baseUri = new Uri("http://my.server.com/folder/directory/sample");
var absoluteUri = new Uri(baseUri,"../../other/path");

OR

Uri uri;
if ( Uri.TryCreate("http://base/","../relative", out uri) ) doSomething(uri);
Sign up to request clarification or add additional context in comments.

4 Comments

May I ask, is there any JavaScript equivalent of the code above?
One point noting, that for some unknown reason new Uri decodes html entities, and if this makes a difference, this will lead to incorrect URL. For example I have a page, lets say hello%2Fworld.html page. After making it absolute I get hello/world.html which is of course incorrect.
42 votes but it doesn't work. First snipped yields: my.server.com/other/path which is missing the /folder/ part.
@MartinCapodici The OP specified a different base URI than for what you are specifying. In your case, you can can use "http://my.server.com/folder/directory/sample/" as the base URI.
0

Some might be looking for Javascript solution that would allow conversion of urls 'on the fly' when debugging

var absoluteUrl = function(href) {
    var link = document.createElement("a");
    link.href = href;
    return link.href;
} 

use like:

absoluteUrl("http://google.com")

http://google.com/

or

absoluteUrl("../../absolute")

http://stackoverflow.com/absolute

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.