私のアプリケーションでは、ユーザーの電子メール アドレスを取得して暗号化し、URL エンコードして、QueryString に渡します。
email = Server.UrlEncode(aes.Encrypt(email));
ランディング ページは Request.Querystring["email"] を実行し、それを UrlDecodes してから復号化します。
string email = Server.UrlDecode(Request.QueryString["eId"]);
string decemail = aes.Decrypt(email);
return decemail;
「+」文字が削除されるという非常に奇妙な動作が発生していたため、復号化に失敗していました。
UrlDecode を削除しようとしましたが、問題は解決しませんでした。
問題を解決したのは、これを行うことでした:
string email = Request.QueryString["eId"].ToString();
string decemail = aes.Decrypt(email);
return decemail;
UrlDecode を取り除き、クエリ文字列で ToString() を呼び出します。
なぜこれが起こるのか誰にも分かりますか?Request.QueryString はデフォルトで urlDecode を呼び出しますか? 私はそうは思わない。
また、なぜ .ToString() を実行するとこのインスタンスで機能するのでしょうか?