2011-09-12 5 views
8

Utilizzo Windows 7 Ultimate x64.WebRequest.GetResponse richiede molto tempo a meno che DefaultWebProxy non sia stato annullato

Ho avuto un primo Sfoglia e trovato this dove ho preso la 'soluzione' al problema, ma vorrei sapere il motivo per cui - Non voglio null la DefaultWebProxy nel caso in cui ci sia un proxy legittima che dovrebbe essere utilizzato. (btw I am non dietro un proxy http)

Ecco un semplice test dell'unità che illustra il problema.

[Test] 
    public void TestWebRequest() 
    { 
     //if I dont include the following line the request takes ~40 seconds. 
     WebRequest.DefaultWebProxy = null; 

     var httpRequest = WebRequest.Create("http://google.com");       

     var stopWatch = new Stopwatch(); 
     stopWatch.Start(); 
     using (var webResponse = httpRequest.GetResponse())//this is the line taking ages. 
     { 
      using (var sr = new StreamReader(webResponse.GetResponseStream())) 
       Trace.WriteLine(sr.ReadToEnd()); 
     } 
     stopWatch.Stop(); 
     Trace.WriteLine(string.Format("took {0} sec", stopWatch.Elapsed.TotalSeconds)); 
    } 

Possiamo non si prega di mettersi impantanato sul IDisposable provoca.

+0

Penso che il ragionamento sia che HttpWebrequest sta provando a fare il rilevamento automatico del proxy, ed è per questo che ci vuole così tanto tempo. Puoi eseguire questo programma in un ciclo e ottenere la media, ignorando la prima invocazione? Quanto è il tempo? – feroze

+0

sicuro: perché il rilevamento automatico del proxy richiede così tanto tempo? – wal

+0

Potrebbe dipendere dalla configurazione della rete e per vari motivi. Potrebbe essere che la risoluzione DNS sia lenta o che il server proxy sia lento a inviare lo script autoproxy o che la valutazione dell'autoproxy dallo script richieda molto tempo. Oppure lo stesso server proxy è lento. È difficile dire che se non si ottiene un registro di system.net o una traccia di rete – feroze

risposta

1

Ho visto questo e ci sono voluti alcuni risultati per risolvere.

Nel mio caso, quello che è successo è che qualcuno ha inserito uno "" (spazio) nel campo del proxy nelle Opzioni di connessione Internet e attivato per utilizzare il proxy.

È bizzarro, perché causa solo il lungo ritardo sulla prima dell'inizio del Proxy, e se si va indietro alle impostazioni Internet non mostra che non v'è, o era uno spazio in là.

+0

clienti fastidiosi !! – wal