Mega Code Archive

 
Categories / C# / Network
 

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));     } }