C# – WebRequest.GetResponse dauert sehr lange
Wenn ein WebRequest mit C# sehr lange dauert, bzw. das erste Mal wenn man ihn ausführt, länger braucht als die zukünftigen Male, liegt es daran, dass C# bzw. die GetResponse()-Methode nach einem Proxy sucht.
Um diese Wartezeit zu umgehen, kann man mit
WebRequest.DefaultWebProxy = null;
diese Suche ausschalten und somit diese Wartezeit umgehen. Allerdings kann man dann keinen expliziten Proxy mehr verwenden. Hier müsste man sich dann eine eigene Methode bauen, mit einer “if-else”-Verzweigung.
Hier nochmal ein Codesnippet:
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))
}