2013-03-06 5 views
0

У меня есть приложение, которое сканирует веб-сайт для уникальных URL-адресов ссылок (т. Е. Hrefs), а затем сохраняет URL-адреса в базе данных. Я гарантирую, что есть URL-адрес для каждой страницы сайта. Ниже приведен код для получения строки, сохраненной в базе данных.Сравнение URL-адресов в ASP.NET

'url is the url obtained from the link's href 
Dim uriReturn As Uri = New Uri(url, UriKind.RelativeOrAbsolute) 

'Make it absolute if it's relative 
If Not uriReturn.IsAbsoluteUri Then 
    Dim baseUri As New Uri(BaseUrl) 
    uriReturn = New Uri(baseUri, uriReturn) 
End If 

Return LCase(uriReturn.ToString) 

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

Dim CurrentURL As String = lcase(HttpContext.Current.Request.Url.AbsoluteUri 

Мой вопрос: могу ли я быть уверен, что найду совпадение в базе данных с использованием текущего URL-адреса страницы? То есть могут быть различия в строке, полученной из href и строки, возвращаемой с текущей страницы, даже если они указывают на одну и ту же страницу? Есть ли способ конвертировать URL-адреса, чтобы они всегда совпадали?

+0

Можете ли вы привести пример разницы между _ "строкой, полученной из href и строкой, возвращаемой с текущей страницы" _? –

+1

Преобразование URL-адреса в нижний регистр может сломать URL-адрес, между прочим. –

ответ

0

С BaseURl не определен, не могу определить, правильно ли вы получили его. Но BaseUrl должно быть = Request.Url.

И ваш

Dim CurrentURL As String = lcase(HttpContext.Current.Request.Url.AbsoluteUri 

Поскольку вы делаете магазин/извлечение, я предлагаю стандартизировать свои методы. В разделе магазина вы используете uriReturn.ToString(), поэтому в разделе получения вы также должны использовать ToString() вместо AbsoluteUri.

+0

Я использую ссылку базового элемента на странице или URL-адрес запроса. И важно ли использовать ToString(), когда absoluteuri является строкой, а uriReturn необходимо преобразовать в строку? Или это вопрос конвенции? –

+0

Это просто вопрос лучшей практики. Вы никогда не узнаете, кто отлаживает вашу программу через 6 месяцев. По крайней мере, 2 части кодов синхронизируют :) –