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)) }