获取原始(未解码)查询字符串键/值

dfe*_*aro 1 c# asp.net query-string

如何获取查询字符串中的原始(未解码)值?

我找到了Request.Url.Query,它成功地为我提供了原始查询字符串.但是,它给了我一个类型'字符串'和整个QS内容:我如何获得键/值对?

我确实找到了HttpUtility.ParseQueryString,但这迫使我做解码.我需要原始名称/值对.

我必须为此实现自己的查询字符串解析吗?有没有人做过一个我可以使用忽略编码?我找到了Mono实现,但这也强制编码.

谢谢!

编辑:我正在寻找这个的原因是因为某人(不是我!)编写了一些代码来加密一个值并将其放在查询字符串中.但是他们忘了先编码.Request.Querystring()正在进行的解码使得无法解密大约50%的解码,因为加密会留下"+"和"."之类的内容.

Str*_*ior 6

Request.QueryString应该给你一个NameValueCollection已解码的所有键/值对.

对不起,我误解了这个问题.你需要自己解析它,但它不应该那么困难:

Request.Url.Query.Split('&').Select(pair => pair.Split('='))
    .ToDictionary(a => a[0], a => a[1]);
Run Code Online (Sandbox Code Playgroud)

当然,这是假设您的URL中未编码的值不包含"&"或"="值.如果他们这样做......好吧,那就是那种URL编码,不是吗?

  • +1.显然如果有人编码失败,它可能在错误的地方包含`&`和`=`... (3认同)