4

私のアプリケーションでは、ユーザーの電子メール アドレスを取得して暗号化し、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() を実行するとこのインスタンスで機能するのでしょうか?

4

1 に答える 1

4

うん、正しい。Request.QueryString は、実際にはすでに URL デコードされた文字列を返します。

ソース:

http://www.codeproject.com/KB/custom-controls/antiauto.aspx?msg=1475521

http://www.kamath.com/codelibrary/cl006_url.asp

于 2009-11-18T22:54:54.900 に答える