Question

J'ai écrit une application console très simple qui est juste pour télécharger un fichier en utilisant le morceau de code suivant:

System.Net.WebClient web = new System.Net.WebClient ();
web.DownloadFile ("http://www.google.com", "file.txt");

Sur mon précédent machine de développement, cela a été très rapide. Dès que j'exécuté la méthode DownloadFile, la demande a sur le fil et la réponse est revenue très bientôt. Je visitai ce comportement avec l'outil ProcMon.

Cependant, après le passage à une autre machine, qui se trouve être beaucoup plus puissant que ma boîte de développement initial, je remarque que rien ne se passerait-il pendant environ 5-8 secondes, lors de l'appel en DownloadFile. Aller à la même URL avec un navigateur montrerait des résultats presque immédiats.

Après avoir passé plusieurs heures à regarder dans ce, entrer dans le code source .NET, j'ai finalement renoncé à System.Net.ServicePointManager.FindServicePoint où l'intensification d'une certaine manière ne fait plus sens pour moi, et où une résolution proxy semblait être en cause.

J'ai finalement éteint Détecter automatiquement les paramètres Paramètres réseau dialogue de Options Internet dialogue, trouvée dans Internet Explorer 8 (I suis sous Windows 7 64 bits), laissant la boîte de dialogue sans jeu de cases à cocher. Cette magie tout a fait faire très, très rapide. Plus de délai.

Eh bien, je l'ai trouvé un moyen de contourner le problème que j'observais, mais je serais heureux si quelqu'un pouvait partager quelques idées sur ce qui pourrait être mal avec mon code. Puis-je obtenir en quelque sorte le même effet en configurant en quelque sorte l'instance WebClient?

Était-ce utile?

La solution

Avez-vous essayé de mettre explicitement le proxy?

web.Proxy = new WebProxy();

Cela devrait essentiellement être équivalent à dire: « Ne pas utiliser un proxy du tout -. Ne même pas essayer »

Autres conseils

Avez-vous essayé de définir les propriétés de web.Proxy?

Ex:

System.Net.WebClient web = new WebClient();
web.Proxy = new WebProxy("Address here");
web.DownloadFile("http://www.google.com", "file.txt");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top