Combine URL
using System; using System.Web; class UriUtility { internal static Uri Combine(string baseUri, string relativePath, bool treatAbsolutePathAsRelative) { var uri = new Uri(baseUri); return Combine(uri, relativePath, treatAbsolutePathAsRelative); } internal static Uri Combine(Uri baseUri, string relativePath, bool treatAbsolutePathAsRelative) { if (baseUri == null) { throw new ArgumentNullException("baseUri"); } if (relativePath == null) { throw new ArgumentNullException("relativePath"); } var builder = new UriBuilder(baseUri); var trimChars = new[] { '/' }; builder.Path = builder.Path.TrimEnd(trimChars); builder.Path = VirtualPathUtility.AppendTrailingSlash(builder.Path); if (relativePath.StartsWith("/")) { if (!treatAbsolutePathAsRelative) { throw new ArgumentException("AbsoluteVirtualPathNotAllowed", "relativePath"); } relativePath = relativePath.TrimStart(trimChars); } return new Uri(builder.Uri, new Uri(relativePath, UriKind.Relative)); } }