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.
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
sicuro: perché il rilevamento automatico del proxy richiede così tanto tempo? – wal
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