我怎样才能从 URL 中捕捉到 ASHX 文件中具有多个值的井号 (#)

How can I catch a pound sign(#) from URL with multiple values in ASHX files

这是我的 ASHX 文件,我在其中使用 httpcontext 从请求 URL 中捕获多个参数,它工作正常,但是当我包含哈希 (#) 值时在 Text 参数中通过 URL。它没有采用另一个参数(文本参数旁边)的 FLOW 值。

所以它适用于:

http://localhost:10326/ussd.ashx?user=MSL&pass=MSL663055&tid=65506&msisdn=8801520101525&text=***3333**&flow=begin&momt=mo

它不适用于:

http://localhost:10326/ussd.ashx?user=MSL&pass=MSL663055&tid=65506&msisdn=8801520101525&text=***3333#**&flow=begin&momt=mo

我的 ASHX 文件:

public void ProcessRequest(HttpContext context)
{
    HttpRequest httpRequest = context.Request;
    string user = httpRequest.QueryString["user"].ToString();
    string pass = httpRequest.QueryString["pass"].ToString();
    string tid = httpRequest.QueryString["tid"].ToString();
    string msisdn = httpRequest.QueryString["msisdn"].ToString();
    string text = httpRequest.QueryString["text"].ToString();
    flow = httpRequest.QueryString["flow"].ToString();
    HttpContext.Current.Session["user"] = user;
    HttpContext.Current.Session["pass"] = pass;
    HttpContext.Current.Session["tid"] = tid;
    HttpContext.Current.Session["msisdn"] = msisdn;
    HttpContext.Current.Session["text"] = text;
    HttpContext.Current.Session["flow"] = flow;

在将参数值添加到 URL 之前,您需要对参数值进行 URI 编码。这样服务器就不会被不安全的字符弄糊涂了,例如“#”,当作为 URL 的一部分包含时,它有自己的含义。参见 RFC 3986 Section 2

请参阅 Encode URL in JavaScript 作为如何使用 JavaScript 对发送的数据进行编码的示例。 URL 中发送数据的任何内容都需要进行编码。请求到达服务器后,您无能为力。在不知道您的 URL 是如何创建的情况下,我无法提供更多。

简而言之:问题出在您的客户端代码上,而不是您的 ASHX 文件。