public static class Program
private static string apiServiceBaseUrl = "https://blah.com.au/auth/admin/realms/umd-dev/";
private static string apiServiceBaseUrlNoRealm = "https://blah.com.au/auth/admin/realms/";
public static void Main()
Console.WriteLine("Original with null realm:");
Console.WriteLine(apiServiceBaseUrl.AppendUrlPath());
Console.WriteLine("New with null realm:");
Console.WriteLine(apiServiceBaseUrl.AppendUrlPathNew());
Console.WriteLine("Original with realm:");
Console.WriteLine(apiServiceBaseUrlNoRealm.AppendUrlPath("umd-test"));
Console.WriteLine("New with realm:");
Console.WriteLine(apiServiceBaseUrlNoRealm.AppendUrlPathNew("umd-test"));
public static class StringExtensions {
public static string AppendUrlPathNew(this string basePath, string suffix = null)
var baseUri = new Uri(basePath);
if (suffix != null && Uri.TryCreate(baseUri, suffix, out Uri result)) {
return result.ToString();
return baseUri.ToString();
public static string AppendUrlPath(this string basePath, string suffix = null)
return AppendPath(basePath, suffix, '/');
public static string AppendPath(this string basePath, string suffix, char pathSeparator = '/')
return $"{(basePath ?? "").Trim().TrimEnd(pathSeparator)}{pathSeparator}{(suffix ?? "").Trim().TrimStart(pathSeparator)}";