簡體   English   中英

Request.QueryString用法,用於讀取傳遞的URL

[英]Request.QueryString usage to read passed url

我使用代碼Request.QueryString [“ u”]讀取傳遞給我的Web應用程序的URL。 如果傳遞的網址沒有參數,則一切正常,例如,如果提交了此類網址

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

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM