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