C# Request.QueryString用于读取传递的url

C# Request.QueryString用于读取传递的url,c#,asp.net,query-string,C#,Asp.net,Query String,我使用CodeRequest.QueryString[“u”]读取传递给我的web应用程序的URL。如果传递的url没有参数,那么一切都可以正常工作,例如,如果提交了这样的url Request.QueryString[“u”]返回 而comments=This+is+a+test+for+PDF被忽略 我理解为什么会发生这种情况,无需解释:),但如何解决呢 我认为一种解决方案是用引号括住参数。像这样 "http://www.submitedurl.com/top_sellers_pdf.p

我使用CodeRequest.QueryString[“u”]读取传递给我的web应用程序的URL。如果传递的url没有参数,那么一切都可以正常工作,例如,如果提交了这样的url

Request.QueryString[“u”]返回

而comments=This+is+a+test+for+PDF被忽略

我理解为什么会发生这种情况,无需解释:),但如何解决呢

我认为一种解决方案是用引号括住参数。像这样

"http://www.submitedurl.com/top_sellers_pdf.php?GoodThru=7-21-2011&comments=This+is+a+test+for+PDF”


还有什么解决方案呢?

任何将URL传递给应用程序的方法都是错误的。RFC 2396说明
&
是URI中的保留字符,如果要将其视为数据而不是查询字符串分隔符,则必须将其转义到
%26
。是否有可能修复将URL传递到web应用程序的行为

如果做不到这一点,您需要获取查询字符串并自己解析它。您可以使用以下方法将整个查询字符串作为一个字符串获取:

Request.QueryString.ToString()
。。。并使用以下命令获取'u='参数后的所有内容:

Request.QueryString.ToString().Substring(Request.QueryString.ToString().IndexOf("u=")+2)

任何将URL传递给应用程序的操作都是错误的。RFC 2396说明
&
是URI中的保留字符,如果要将其视为数据而不是查询字符串分隔符,则必须将其转义到
%26
。是否有可能修复将URL传递到web应用程序的行为

如果做不到这一点,您需要获取查询字符串并自己解析它。您可以使用以下方法将整个查询字符串作为一个字符串获取:

Request.QueryString.ToString()
。。。并使用以下命令获取'u='参数后的所有内容:

Request.QueryString.ToString().Substring(Request.QueryString.ToString().IndexOf("u=")+2)

如果您控制URL参数,则可以在生成URL时将&替换为其他内容,并在提取URL时将其替换回。

如果您控制URL参数,则可以在生成URL时将&替换为其他内容,然后在提取时将其替换回来。

您可以使用原始url自己解析它,也可以循环处理请求。Querystring NameValueCollection:`

foreach (KeyValuePair<string, string> item in Request.QueryString)
    {
       string  a = item.Key; 
        string b = item.Value;

    }
foreach(Request.QueryString中的KeyValuePair项)
{
字符串a=item.Key;
字符串b=项值;
}

您将知道U代表原始的基本url,其他项目是原始url中的参数

您可以使用原始url自己解析它,也可以循环处理请求。Querystring NameValueCollection:`

foreach (KeyValuePair<string, string> item in Request.QueryString)
    {
       string  a = item.Key; 
        string b = item.Value;

    }
foreach(Request.QueryString中的KeyValuePair项)
{
字符串a=item.Key;
字符串b=项值;
}

您将知道U代表原始基本url,其他项目是原始url中的参数

构建查询字符串时,请使用:

var value = HttpUtility.UrlEncode("My querystring with & inside it");

构建查询字符串时,请使用:

var value = HttpUtility.UrlEncode("My querystring with & inside it");

但是,如果原始url包含包含((%26)作为数据的参数,该怎么办?应在查询字符串中将
&
转义为
%26
%
应在查询字符串中转义为
%25
。但是,如果原始url包含的参数包含((%26)作为数据,该怎么办?
&
应在查询字符串中转义为
%26
。应在查询字符串中将
%
转义为
%25