[英]Request.QueryString usage to read passed url
我使用代碼Request.QueryString [“ u”]讀取傳遞給我的Web應用程序的URL。 如果傳遞的網址沒有參數,則一切正常,例如,如果提交了此類網址
Request.QueryString [“ u”]返回
http://www.submitedurl.com/top_sellers_pdf.php?GoodThru=7-21-2011
and comments =此+ is + a + test + for + 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”
還有什么其他解決方案?
建立查詢字串時,請使用:
var value = HttpUtility.UrlEncode("My querystring with & inside it");
將該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自己解析,也可以遍歷Request.Querystring NameValueCollection:
foreach (KeyValuePair<string, string> item in Request.QueryString)
{
string a = item.Key;
string b = item.Value;
}
您會知道U代表原始基本網址,其他項是原始網址中的params
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.