В моем приложении я беру адрес электронной почты пользователя, шифрую его, кодирую URLEncode и передаю в 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()?