2010-06-29 165 views
3

假設我有一臺名爲「linux」的計算機上託管的網站,它是地址爲192.168.1.1和10.1.1.1的兩個不同網絡的一部分。當「LINUX」在本地工作,我可以通過以下網址訪問該網站:如何檢查兩個不同的URL是否指向相同的資源?

http://192.168.1.1/ http://10.1.1.1/ http://linux/ http://localhost/ http://127.0.0.1/

工作在另一臺機器上的網絡「10.1.1.0/24」上我可以使用以下命令:

http://10.1.1.1/ http://linux/

但在「192.168.1.0/24」我只能用:

http://192.168.1.1/ http://linux/

我開發比較網址的應用程序,並在此應用程序的情況下,如果它們指向的兩個URL是相等相同的資源。

在C#中使用URI類進行這種比較是否有一種快速方法?

回答

3

URI類沒有辦法幫你;它只能確定兩個URI是否是相同的URI,並且只有它們具有相同的服務器名稱/ IP地址纔是相同的URI。

最好的選擇是從兩個URL下載資源,並通過檢查相等性並假定兩個資源是相同的資源(如果它們是相同的位序列)來查看它是否是相同的資源。

這不是我的選擇,性能成本可能太高了。我希望的東西,可以匹配的URI的的「主機地址」的一部分,那麼所有剩下來比較是相對路徑和端口... - Thiado德阿魯達

不幸的是,框架中沒有任何東西可以完成你想要的功能,因爲沒有可靠的方法將不同的主機名映射到相同的主機上,因此也沒有可靠的方法來映射相同的資源。

你將不得不有一些主機映射到這些主機的各種別名,並自己查詢它們。 URI.Host屬性將爲您提供有關URI的主機名,但您必須自己翻譯它。框架中沒有任何東西能夠爲你做到。

+0

這不是我的選擇,性能成本可能太高了。我希望可以匹配URI的'主機地址'部分,然後所有剩下的要比較的是相對路徑和端口... – 2010-06-29 19:50:54

+0

@Thiado de Arruda:我回復了我的答案。 – Randolpho 2010-06-29 20:41:20

0

你也許可以用python做這個美麗的湯(刮掉頁面並檢查一些元素是否相同),但是它會比較慢,因爲你需要拉實際的web數據。

相關問題