この状況では同様の入力でこのようなエラーが生成されるため、理解できないコードが破損することがあります。
たとえば、私の ASP.NET プロジェクトでは、次のような GET の結果を Base64 で返しています。
if (currentCert == String.Empty) Response.Redirect("~/Registration.aspx?" +
Convert.ToBase64String(Encoding.UTF8.GetBytes("error=noEcpSelected")));
そのため... 1つの状況( GetBytes() メソッドの最後の文字列引数のみが変更されています)...通常の結果が得られましたが、別の状況では、無効な文字列形式に関するax例外が発生しました(たとえば、生成された上位コードそれ ):
入力は有効な Base-64 文字列ではありません。非 Base 64 文字、3 つ以上の埋め込み文字、または埋め込み文字の間に非空白文字が含まれているためです。
その変数のデバッガーを調べたところ、次のような値が得られました。
"ZXJyb3I9bm9FY3BTZWxlY3RlZA=%3d"
上のコードが返されたのです
よくわかりません。%3d はどのように追加されたのですか?
そして最も奇妙なことは、別の文字列の 1 つのコードが異なる動作をすることです。1 つの文字列では - OK、他の文字列では - 常に %3d または %7d を追加します...
なんで?