【问题标题】:Request parameters not recognizing & as separator请求参数不识别 & 作为分隔符
【发布时间】:2012-02-09 05:21:57
【问题描述】:

我有一个 HttpHandler,它通过简单地使用 context.Request["param1"] 从请求 URL 中读取参数。问题是我的网站符合 xHTML,因此所有链接都经过编码。所以我有一个格式为:http://mydomain.com/?param1=a&param2=b 的链接。

问题是 Request["param2"] 无法识别。相反,它认为第二个参数是“amp;param2”。它没有意识到 & 在 URL 中表示 &。我如何告诉“请求”链接应符合 xHTML?

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc xhtml


    【解决方案1】:

    您想使用Request.QueryString,而不是请求。

    例如:

    context.Request.QueryString["param1"]
    context.Request.QueryString["param2"]
    

    【讨论】:

    • 嗯,这并没有改变行为
    • 请求将访问查询字符串。它还访问其他几个集合。详情请看这里:hanselman.com/blog/…
    • 正确,但与问题无关。
    • 我刚刚注意到 URL 中只有一个 ?(而不是页面名称),这可能会导致查询字符串解析失败。您可以控制 URL 的生成方式吗?
    • @competent_tech 这是正确的,正如我在我发布的详细说明该主题的链接中所指出的那样。我从来没有声称其他。我的观点是,即使您的建议总体上主观上是正确的,您对手头问题的回答也是错误的。使用 Request.QueryString 与 Request,虽然通常是可取的,但不会解决 OP 的问题。
    【解决方案2】:

    URL 中分隔 GET(即查询字符串/请求)参数的 & 符号仍然需要是“&”。如果您在实际的 XHTML 中显示 & 符号,那么您将使用 XHTML 编码。 XHTML 编码用于在 URL 中用作参数分隔符的 & 符号将不会被识别。

    【讨论】:

      【解决方案3】:

      你需要UrlEncode你的链接,而不是HTMLEncode

      第一个给& = %26,而后者(你正在使用的那个)给& = &,处理程序通过&中的第一个&打破参数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-17
        • 2019-01-22
        • 1970-01-01
        • 2014-04-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多