2012-07-25 58 views
3

如果我擁有URI「http://www.test.com/something」,並且我想要「www.test.com」部分。 我應該使用什麼? (什麼是最適合這種)如何獲得URI的特定部分

我問這個問題在CHAT,但並沒有得到這麼多的運氣。

+0

我不確定這個問題,但你想使用提取的主機? – Rup 2012-07-25 14:20:01

+0

向用戶展示= /(我知道,但是這是一個請求,當客戶想要什麼時,我們能做什麼?!) – 2012-07-25 14:22:15

回答

5

堅持與Request.Url.Authority,所以如果您的主機有另一個端口比80,它會顯示(如果這對你很重要)。


實施例:

Uri baseUri = new Uri("http://www.test.com:8888/something"); 
Console.WriteLine(myUri.Authority); 
Console.WriteLine(myUri.Host); 

輸出:

www.test.com:8888
www.test.com


如果你只是想顯示主機部分給用戶,沒有必要用DnsSafeHost打擾反正。如果您需要轉換IPv6地址,則可以使用它,例如http://[fe80::200:39ff:fe36:1a2d%4]/temp/example.htmfe80::200:39ff:fe36:1a2d%4用於名稱解析。

+0

由於DnsSafeHost和偉大布局的解釋,我將你的答案作爲正確答案在你的答案(容易閱讀/理解),但[@Deanna](http://stackoverflow.com/a/11652013/662581)和[+尼古拉](http://stackoverflow.com/a/11652020/662581)也是很好的答案 – 2012-07-25 14:32:39

4

正如評論所述,爲打算使用主機名的目的可能很重要。

通常,我會使用 Uri.Authority,或者組合我需要的組件。

權威提供了兩個關鍵組件來定位服務:1)主機名2)端口。 其他兩個屬性只給你主機名。

例如,如果我訪問的網站不是在默認端口上託管的,但是例如81(http://example.com:81),我也想通知端口號。