2010-06-29 76 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数据。

相关问题