Request.QueryString没有返回正确的值

时间:2018-10-16 19:04:57

标签: c# url query-string

我正在对URL值使用AES加密。我在这里仅用一个参数对其进行了采样以演示该问题:

  

http://localhost:12345/pagename?id=ha3bEv8A%2ffs0goPGeO6NPQ%3d%3d

Request.QueryString["id"]返回的"ha3bev8a/fs0gopgeo6npq=="显然与加密ID的值不匹配。有什么绊倒QueryString吗?

2 个答案:

答案 0 :(得分:0)

您将获得一个URL编码的查询字符串,Request.QueryString["id"]似乎可以为您解码。您总是可以重新编码:

string decodedId = Request.QueryString["id"];
string reEncodedId = HttpUtility.UrlEncode(decodedId);

答案 1 :(得分:0)

您看到的值实际上是正确的。呈现方式可能会使您感到困惑。 URL中的id值以URL编码进行编码。 某些字符必须以不同的方式编码在URL字符串中,因为它们是特殊字符,如果编码不正确,有时会弄乱字符串的解释方式。

例如,在您提供的查询字符串中: http://localhost:12345/pagename?id=ha3bEv8A%2ffs0goPGeO6NPQ%3d%3d

%2f字符是对'/'字符进行编码的方式,而%3d是对'='字符进行编码的方式。

当您通过获取Request.QueryString [“ id”]获得值时,它会将其从URL编码的字符串解码回原始文本。

检查此页面以获取更多参考。 https://www.w3schools.com/tags/ref_urlencode.asp

相关问题