2010-05-20 6 views
3

В настоящее время я разрабатываю приложение, которое просматривает все файлы на сервере и проверяет каждый hrefs, чтобы проверить, действительны они или нет. Использование WebClient или HttpWebRequest/HttpWebResponse вызывает излишнюю перегрузку процесса, потому что он загружает всю страницу каждый раз, что бесполезно, мне нужно только проверить, не возвращается ли ссылка 404.Самый эффективный способ тестирования ссылок

Что было бы самым эффективным способом ? Socket, кажется, хороший способ сделать это, однако я не совсем уверен, как это работает.

Спасибо, что поделились своим опытом!

ответ

4

Наиболее эффективным было бы отправить глагол HEAD, чтобы сохранить пропускную способность.

var request = WebRequest.Create("http://google.com/"); 
request.Method = "HEAD"; 
using (var response = (HttpWebResponse)request.GetResponse()) 
{ 
    if (response.StatusCode == HttpStatusCode.OK) 
    { 
     // 200 OK 
    } 
} 
+0

Спасибо за явный ответ, однако, просто интересно, почему вы используете var вместо httpWebResponse? Может ли оно вернуть исключение? –

+0

Нет, это только потому, что 'var' короче, чем' HttpWebResponse' :-) –

+0

К сожалению, это все еще слишком медленно, дайте мне знать, если у кого-то еще есть другой ответ –