Je dois tester environ 300 URL pour vérifier si elles mènent à des pages réelles ou redirigent vers une autre page. J'ai écrit une application simple dans .NET 2.0 pour le vérifier, en utilisant HttpWebRequest. Voici l'extrait de code:HttpWebRequest.AllowAutoRedirect = false peut provoquer un dépassement de délai?
System.Net.HttpWebRequest wr = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url);
System.Net.HttpWebResponse resp = (System.Net.HttpWebResponse)wr.GetResponse();
code = resp.StatusDescription;
Le code a couru rapidement et a écrit au dossier que toutes mes URL retournent l'état 200 OK. Puis j'ai réalisé que par défaut GetResponse() suit les redirections. Que je suis bête! J'ai donc ajouté une ligne pour le faire fonctionner correctement:
System.Net.HttpWebRequest wr = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url);
wr.AllowAutoRedirect = false;
System.Net.HttpWebResponse resp = (System.Net.HttpWebResponse)wr.GetResponse();
code = resp.StatusDescription;
j'ai couru à nouveau le programme et attendu ... attendu ... attendu ... Il est avéré que pour chaque URL que je recevais un System.Net .WebException "L'opération a expiré". Surpris, j'ai vérifié l'URL manuellement - fonctionne bien ... J'ai commenté AllowAutoRedirect = ligne fausse - et cela fonctionne bien encore. Non commenté cette ligne - timeout. Des idées sur ce qui pourrait causer ce problème et comment contourner?
Aucune idée pourquoi cela a fonctionné sans AllowAutoRedirect = false ou comment a-t-il su à la première demande que je ne vais pas le fermer correctement, mais ça m'a aidé! – user34402
@perpetka: Lors de la redirection, il fermait probablement la connexion d'origine et disposait de suffisamment d'hôtes * différents * pour se rediriger afin d'éviter le problème. –
Cela a du sens. Merci beaucoup pour votre aide! – user34402