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

Posted

技术标签:

【中文标题】如何读取 ASP.NET 原始 URL 的查询字符串参数?【英文标题】:How to read the query string params of a ASP.NET raw URL? 【发布时间】:2012-07-25 11:49:40 【问题描述】:

我有一个变量

string rawURL = HttpContext.Current.Request.RawUrl;

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

【问题讨论】:

可能重复:***.com/questions/1206548/… 【参考方案1】:

在 .NET Core 中有多种方法可以访问 HttpContext,例如 IHttpContextAccessor

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-context?view=aspnetcore-5.0

当你有上下文时,你可以简单地使用这个方法:

httpContext.Request.QueryString.Value

用法:

网址:https://localhost:44335/test?key=123

var key = System.Web.HttpUtility.ParseQueryString(httpContext.Request.QueryString.Value).Get("key");

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

试试这个:

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

【讨论】:

【参考方案4】:

这可能就是你所追求的

  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"); 

【讨论】:

真的吗?这一切真的有必要吗? @james31rock yes..really :) 问题并不那么明显,一些天才已经否决了它...... rawurl 需要以这种方式处理。其他人提到的是默认查询字符串。 @GilliVilla,如果您希望从 RawUrl 检索参数,那么您是正确的。你为什么会呢?如果你有 HttpContext.Current.Request,你需要做的就是 HttpContext.Current.Request.QueryString["yourparam"]。你让你的代码不可读。这就是为什么人们给你投反对票的原因。我没有给你投反对票,但我明白为什么会这样。 @james31rock 在我的例子中,因为 URL 重写。如果您使用 URL 重写,浏览器中的可见 URL 和 RawUrl 可能会有很大不同。 这真的很有帮助。应该注意,由于您只需要 QueryString,因此只需使用 string.Format("http: //a.com0", Request.RawURL)。方案和主机名真的无关紧要。【参考方案5】:

Request 对象上有 Params 属性,可让您轻松完成。你不必自己解析它。

【讨论】:

【参考方案6】:

无需通过RawUrl - Request 对象已包含使用Request.QueryString 属性解析的版本。

这是一个已编入索引的NameValueCollection

【讨论】:

他专门询问如何在 RawUrl 上执行此操作。 RawUrl 查询字符串和 Request.QueryString 在某些情况下是不相关的,例如,如果您正在执行 URL 重写。他使用 RawUrl 的事实强烈暗示他正在使用 URL 重写。 过去我也使用过Request.Params(@Piotr 建议),这在某些情况下很好。在其他情况下,我已按照@Oded 的建议切换到Request.QueryStringRequest.QueryString 不会触发参数验证,例如当您接受 html 作为输入时,您可能希望避免这种情况。

以上是关于如何读取 ASP.NET 原始 URL 的查询字符串参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ASP.NET Core 从查询字符串中读取值?

ASP.NET Core Web API - 如何处理 URL 查询字符串中的“null”与“undefined”?

如何使用 ASP.NET Core 将查询字符串参数转换为看起来像目录部分?

ASP.NET:获取 *real* 原始 URL

带有 ASP.NET 路由的原始、未处理的 URL

asp.net mvc中如何读取上传的doc文件中的数据(含有中文字符)