I was using HttpUtility.UrlEncode but I had problems if the base64 encoded string contained a "+" sign. It was correctly being encoded to "%2b" but when it was coming back from the browser it was interpreted as a space. So, I used two simple encode/decode methods instead:
public static string UrlEncodeBase64(string base64Input)
{
return base64Input.Replace('+', '.').Replace('/', '_').Replace('=', '-');
}
public static string UrlDecodeBase64(string encodedBase64Input)
{
return encodedBase64Input.Replace('.', '+').Replace('_', '/').Replace('-', '=');
}