using System.Text.RegularExpressions;
public static void Main()
var sessionId = "ggySK4Q8406KWOF6BHIOdQ";
Console.WriteLine(IsValidSessionId(sessionId));
Console.WriteLine(ToGuid(sessionId));
public static Guid ToGuid(string base64UrlSafeId)
if (!TryParse(base64UrlSafeId, out guid))
throw new ArgumentException(base64UrlSafeId);
public static bool TryParse(string base64Id, out Guid id)
if (string.IsNullOrWhiteSpace(base64Id))
base64Id = base64Id.Trim().Replace('-', '+').Replace('_', '/');
if (!IsValidSessionId(base64Id))
id = new Guid(Convert.FromBase64String(base64Id));
public static bool IsValidSessionId(string sessionId)
if (string.IsNullOrWhiteSpace(sessionId))
return (sessionId.Length == 22) && Regex.IsMatch(sessionId, @"^[a-zA-Z0-9\+/]*={0,3}$", RegexOptions.None);