我使用代码Request.QueryString [“u”]来读取传递给我的Web应用程序的URL。如果传递的url没有参数但是例如提交了这样的url
,那么一切正常Request.QueryString [“u”]返回
http://www.submitedurl.com/top_sellers_pdf.php?GoodThru=7-21-2011
和评论=此+ + + + + + + + + PDF被忽略。
我理解为什么这不需要解释:),但是如何解决这个问题?
我认为一种解决方案是用引号括起参数。喜欢这个
http://mywebapp:80/submit.aspx?u=“http://www.submitedurl.com/top_sellers_pdf.php?GoodThru=7-21-2011&comments=This+is+a+test+for+PDF”
还有什么其他解决方案?
答案 0 :(得分:1)
构建查询字符串时,请使用:
var value = HttpUtility.UrlEncode("My querystring with & inside it");
答案 1 :(得分:0)
无论将哪个URL传递给您的应用程序都是错误的。 RFC 2396声明&
是URI中的保留字符,如果要将其视为数据,则必须转义为%26
,而不是查询字符串分隔符。是否可以修复将URL传递给Web应用程序的行为?
如果失败,您需要获取查询字符串并自行解析。您可以使用以下命令将整个查询字符串作为一个字符串获取:
Request.QueryString.ToString()
...并且在' u ='之后获取所有内容。参数使用:
Request.QueryString.ToString().Substring(Request.QueryString.ToString().IndexOf("u=")+2)
答案 2 :(得分:0)
如果您控制了URL参数,则可以替换&生成url时使用其他内容,并在提取url时将其替换回来。
答案 3 :(得分:0)
您可以使用原始URL并自行解析它,也可以遍历Request.Querystring NameValueCollection:`
foreach (KeyValuePair<string, string> item in Request.QueryString)
{
string a = item.Key;
string b = item.Value;
}
你会知道U代表原始基本网址,其他项目是原始网址中的参数