Path.Combine for URLs? Path.Combine for URLs? asp.net asp.net

Path.Combine for URLs?


Uri has a constructor that should do this for you: new Uri(Uri baseUri, string relativeUri)

Here's an example:

Uri baseUri = new Uri("http://www.contoso.com");Uri myUri = new Uri(baseUri, "catalog/shownew.htm");

Note from editor: Beware, this method does not work as expected. It can cut part of baseUri in some cases. See comments and other answers.


This may be a suitably simple solution:

public static string Combine(string uri1, string uri2){    uri1 = uri1.TrimEnd('/');    uri2 = uri2.TrimStart('/');    return string.Format("{0}/{1}", uri1, uri2);}


You use Uri.TryCreate( ... ) :

Uri result = null;if (Uri.TryCreate(new Uri("http://msdn.microsoft.com/en-us/library/"), "/en-us/library/system.uri.trycreate.aspx", out result)){    Console.WriteLine(result);}

Will return:

http://msdn.microsoft.com/en-us/library/system.uri.trycreate.aspx