如何读取 ASP.NET 原始 URL 的查询字符串参数?

23

我有一个变量

string rawURL = HttpContext.Current.Request.RawUrl;

如何读取此URL的查询字符串参数?


可能是重复问题:https://dev59.com/AXM_5IYBdhLWcg3w1G-N - LittleBobbyTables - Au Revoir
6个回答

37

这很可能是您想要的内容

  Uri theRealURL = new Uri(HttpContext.Current.Request.Url.Scheme + "://" +   HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.RawUrl);

   string yourValue= HttpUtility.ParseQueryString(theRealURL.Query).Get("yourParm"); 

4
真的吗?所有这些都是必要的吗? - james31rock
2
@james31rock 是的..真的 :) 这个问题并不是那么明显,以至于一些天才已经将其投下了反对票... rawurl 需要这样处理。其他人提到的是默认的查询字符串。 - GilliVilla
@GilliVilla,如果您想从RawUrl中检索参数,则是正确的。但是为什么要这样做呢?如果您有HttpContext.Current.Request,那么您只需要使用HttpContext.Current.Request.QueryString["yourparam"]即可。这会使您的代码难以阅读。这就是为什么人们给您投了反对票的原因。我没有给您投反对票,但我理解为什么会发生这种情况。 - james31rock
3
由于URL重写,我的情况下浏览器中可见的URL和原始URL可能会非常不同。 - NickG
1
这真的很有帮助。需要注意的是,由于您只想要 QueryString,请使用 string.Format("http: //a.com{0}", Request.RawURL)。方案和主机名并不重要。 - Daryl Teo

14

3
他具体在问如何在RawUrl上实现这一点。在某些情况下,RawUrl查询字符串和Request.QueryString没有关联,例如如果您正在进行URL重写。他使用RawUrl的事实是他正在使用URL重写的一个很强的提示。 - NickG
过去我也使用过Request.Params(由@Piotr建议),在某些情况下是可以的。在其他情况下,我已经转换为Request.QueryString,如@Oded所建议的那样。Request.QueryString不会触发参数验证,这可能是您想要避免的情况,例如当您接受HTML作为输入时。 - Manfred

1

1

请尝试以下代码:

string rawURL = HttpContext.Current.Request.ServerVariables["query_string"];


0
在请求对象上有 Params 属性,可以让您轻松地完成此操作。您不必自己解析它。

-6

这将解决你的问题......

string strReq = "";
strReq = HttpContext.Current.Request.RawUrl;
strReq = strReq.Substring(strReq.IndexOf('?') + 1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接