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

我有一个变量

string rawURL = HttpContext.Current.Request.RawUrl;

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

【问题讨论】:

标签: c# asp.net url parameters query-string


【解决方案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.com{0}", 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 作为输入时,您可能希望避免这种情况。
          猜你喜欢
          • 2015-02-17
          • 2012-08-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-17
          相关资源
          最近更新 更多