2010-05-20 12 views
3

Je développe actuellement une application qui passe en revue tous les fichiers sur un serveur et vérifie chaque hrefs pour vérifier s'ils sont valides ou non. L'utilisation d'un WebClient ou d'un HttpWebRequest/HttpWebResponse est un peu overkilling le processus parce qu'il télécharge la page entière chaque fois, ce qui est inutile, je dois seulement vérifier si le lien ne renvoient pas 404.Le moyen le plus efficace pour tester les liens

Quel serait le moyen le plus efficace ? Socket semble être un bon moyen de le faire, mais je ne suis pas tout à fait sûr comment cela fonctionne.

Merci pour votre expertise!

Répondre

4

Le plus efficace serait d'envoyer le verbe HEAD pour préserver la bande passante.

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

Merci pour la réponse explicite, cependant, je me demandais juste pourquoi vous utilisez var au lieu de httpWebResponse? Pourrait-il renvoyer une exception? –

+0

Non, c'est seulement parce que 'var' est plus court que' HttpWebResponse' :-) –

+0

Malheureusement, c'est encore trop lent, faites le moi savoir si quelqu'un d'autre a une autre réponse –