2010-06-29 1 views
3

Допустим, у меня есть веб-сайт, размещенный на компьютере под именем «linux», и он является частью двух разных сетей с адресами 192.168.1.1 и 10.1.1.1. При работе локально на «Linux», я могу открыть веб-сайт с помощью следующих URL-адресов:Как проверить, указывает ли два разных 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-адреса, а также от контекста этого приложения два URL-адреса равны, если они указывают на тот же ресурс.

Есть ли быстрый способ сделать такое сравнение, используя класс URI в C#?

ответ

3

Невозможно, чтобы класс URI вам помог; он может только определить, являются ли два URI одинаковыми URI, и они являются только одним и тем же URI, если они имеют одинаковое имя/IP-адрес сервера.

Наилучший вариант - загрузить ресурс из обоих URL-адресов и посмотреть, является ли он одним и тем же ресурсом, проверяя равенство и предполагая, что два ресурса являются одним и тем же ресурсом, если они представляют собой одну и ту же последовательность бит.

Это не вариант для меня, производительность может быть слишком большой. Я надеялся на то, что может соответствовать «адрес хоста» часть URI, а затем все, что осталось сравнить бы относительный путь и порт ... - Thiado де Arruda

К сожалению, ничего в рамках, которое будет делать то, что вы хотите из коробки, потому что нет надежного способа сопоставления разных имен узлов одному хосту и, следовательно, одного и того же ресурса.

Вам нужно будет иметь какое-то сопоставление хостов с различными псевдонимами этих узлов и запросить их самостоятельно. Свойство URI.Host получит имя хоста URI, о котором идет речь, но вам придется перевести его самостоятельно. Ничто в рамках не сможет сделать это за вас.

+0

Это не вариант для меня, производительность может быть слишком велика. Я надеялся на что-то, что могло бы соответствовать части «адреса хоста» в URI, тогда все, что осталось сравнить, было бы относительным путем и портом ... –

+0

@Thiado de Arruda: Я ответил как отредактировал свой ответ. – Randolpho

0

Возможно, вы сможете сделать это с помощью красивого супа с помощью python (очистить страницу и проверить, совпадают ли некоторые элементы), однако она будет медленнее, так как вам нужно будет вытащить фактические данные в Интернете.

 Смежные вопросы

  • Нет связанных вопросов^_^