如何读取 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.QueryString
。 Request.QueryString
不会触发参数验证,例如当您接受 html 作为输入时,您可能希望避免这种情况。以上是关于如何读取 ASP.NET 原始 URL 的查询字符串参数?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core Web API - 如何处理 URL 查询字符串中的“null”与“undefined”?