2014-10-06 9 views
7

Wenn ich den folgenden Code versuchen:Timeout Verhalten in HttpWebRequest.GetResponse() vs GetResponseAsync()

var request = (HttpWebRequest)HttpWebRequest.Create(url); 
request.Timeout = 3; // a small value 

var response = request.GetResponse(); 
Console.WriteLine(response.ContentLength); 

für eine URL, die ich kenne es mehr als 3 Millisekunden dauern wird, zu laden (Ich habe eine Thread.Sleep(110000) in) es funktioniert gut und wirft eine WebException wie erwartet.

Problem ist, wenn ich zu Asynchron-Methode wechseln:

var response = request.GetResponseAsync().Result; 

oder

var response = await request.GetResponseAsync(); 

Diese Asynchron-Version völlig ignoriert all Timeout-Wert, einschließlich ReadWriteTimeout und ServicePoint.MaxIdleTime

ich nicht finden konnte, alles über Timeout in MSDN GetResponseAsync() Jetzt frage ich mich, ob es ein Fehler in GetResponseAsync() ist oder ist etwas falsch in der Art, wie ich hier async benutze?

+0

siehe Antwort in http://stackoverflow.com/questions/4238345/asynchron-warte-for-taskt-to-complete-with-timeout – artm

+0

Bedeutet es, dass sie Timeout in allen async APIs absichtlich ignorieren? Ich finde das schwer zu glauben. In diesem speziellen Fall bleibt dem API-Benutzer beispielsweise keine Möglichkeit, unterschiedliche Zeitüberschreitungswerte für verschiedene Stufen wie ReadWriteTimeout/ContinueTimeout festzulegen. –

Antwort

14

Timeout gilt nicht für asynchrone Anfragen HttpWebRequest. Zu zitieren the docs:

Die Timeout-Eigenschaft hat keine Auswirkung auf asynchrone Anforderungen

Ich empfehle Ihnen, verwenden HttpClient statt, die mit asynchronen Anforderungen konzipiert wurde.

+0

Ah! Ich habe die falschen Dokumente überprüft. Danke –

+2

"Die Timeout-Eigenschaft hat keine Auswirkungen auf asynchrone Anfragen ** mit der BeginGetResponse oder BeginGetRequestStream-Methode gemacht. **": Docs sind nicht über GetResponseAsync, aber die Antwort ist trotzdem richtig, weil GetResponseAsync BeginGetResponse verwendet. – VorobeY1326

Verwandte Themen