2017-01-09 29 views
1

我有下面的代碼:Uri中的所有特殊字符是什麼?

string myString = "test://mytest/v1.0~admin#1~password"; 
var myUri = new Uri(myString); 

我發現#後的部分不在myUri.LocalPath

我試圖用'&替換散列(#),這是沒有問題的。在哪裏我可以知道像#這樣的特殊字符會在Uri中引起同樣的問題?

+0

#之後的部分不是*應該*成爲LocalPath的一部分......'#'字符分隔了URI的片段部分。 –

+0

我發現下面的代碼可以保持uri中的#:myString = myString.Replace(「#」,Uri.HexEscape('#'));我在這裏找到它:https://social.msdn.microsoft.com/Forums/vstudio/en-US/b1c72950-e07e-4935-bd70-7b5d68da6437/uri-class-not-works-for-ftpwebrequest-if-having -special-characters-in-uri-path-help?forum = netfxbcl在C#中是否有一個常用的方法會對整個字符串進行這種轉換?如果有更多的特殊字符,不只是「#」 – spspli

回答

0

哈希「#」僅供客戶端使用,不會發送到服務器。它可以從JS訪問客戶端導航(即單頁應用程序)。在問號之後,&符號被用作傳遞給GET請求的值的分隔符。例如:http://example.com/controller/action?a=1&b=2&c=3#client-only將a,b和c中的整數值傳遞給服務器,在那裏它們將被解析爲方法參數。 '#'後面的部分被服務器忽略。