Domanda

Ho scritto un'applicazione molto semplice console che è solo scaricando un file utilizzando il seguente pezzo di codice:

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

Sulla mia macchina di sviluppo precedente, questo è stato molto veloce. Appena ho eseguito il metodo DownloadFile, la richiesta è andato oltre il filo e la risposta è tornato molto presto. Ho controllato questo comportamento con lo strumento ProcMon.

Tuttavia, dopo il passaggio a un'altra macchina, che risulta essere molto più potente di mia casella di sviluppo iniziale, ho notato che non sarebbe successo niente per circa 5-8 secondi, quando si chiama in DownloadFile. Andare allo stesso URL con un browser avrebbe mostrato risultati quasi immediati.

Dopo aver trascorso molte ore alla ricerca in questo, entrando nel codice sorgente .NET, Alla fine ho rinunciato a System.Net.ServicePointManager.FindServicePoint dove il passo in qualche modo non aveva più senso per me, e dove alcuni risoluzione procura sembrava di essere in causa.

ho finalmente spento Rileva automaticamente le impostazioni in Impostazioni LAN finestra del Opzioni Internet di dialogo, che si trova in Internet Explorer 8 (I sono in esecuzione Windows 7 x64), lasciando la finestra di dialogo senza un gruppo di caselle. Questo magicamente reso tutto fare molto, molto veloce. Niente più ritardi.

Bene, ho trovato un modo per aggirare il problema stavo osservando, ma sarei contento se qualcuno potesse condividere alcune idee su ciò che potrebbe essere sbagliato con il mio codice. Posso in qualche modo ottenere lo stesso effetto in qualche modo configurando l'istanza WebClient?

È stato utile?

Soluzione

Hai provato a impostare in modo esplicito il proxy?

web.Proxy = new WebProxy();

Questo dovrebbe essere sostanzialmente equivalente a dire, "Non usare un proxy a tutti -. Non provare nemmeno"

Altri suggerimenti

Hai provato l'impostazione delle proprietà web.Proxy?

Esempio:

System.Net.WebClient web = new WebClient();
web.Proxy = new WebProxy("Address here");
web.DownloadFile("http://www.google.com", "file.txt");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top