Ich brauche Hilfe-Einstellung .NET HttpWebRequest-timeout

Mein Ziel ist es, die Antwort von bis zu 6000 Urls in kürzester Zeit. Es funktioniert sehr gut war (12 Sekunden für 5200 LAN-Adressen), bis zu einigen Verzögerungen begann zu geschehen.

Mein code verwendet bis zu 20 gleichzeitige HttpWebRequest.BeginGetResponse mit ThreadPool.RegisterWaitForSingleObject für timeout-handling.

Jedoch einige (bis zu 4 in 5000) der Anfragen nie auf die TimeoutCallback-Funktion mit dem zweiten parameter (timedOut) wahr, und Sie verschwenden 5 Minuten von meiner kostbaren Zeit, bis Sie Treffer theBeginGetResponseCallback Funktion und heben Sie dann eine WebException. Die Ausnahmen, die etwas sagt wie "der Betrieb erreicht die Frist", aber als Ausnahme-Nachricht in Portugiesisch(meine Muttersprache) konnte ich nicht Google es.

Frage ich mich, ob ich reduzieren kann diese Frist bis 20 Sekunden, zum Beispiel. Weiß jemand wie? Ich habe bereits versucht:

<system.web>
    <httpRuntime executionTimeout="20"/>
</system.web>

Aber wie ich bin, läuft es wie eine Konsole-Anwendung, ASP.NET Konfigurationen nicht funktionieren. Und ich habe auch versucht:

myHttpWebRequest.Timeout = 20*1000;

Und

ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), AsyncState, 20*1000, true);

Ohne Erfolg. Können Sie mir helfen?

Update
Was ich versuche zu sagen ist, es gibt 4 mögliche Ergebnisse für eine asynchrone HTTP-Anforderung:

  1. Nie in die callback-Funktion -> timeout callback-Funktion
  2. Erreicht und Antworten erfolgreich
  3. Erreicht und löst eine Ausnahme
  4. Verzögerung von genau 5 Minuten erhöhen, bis ein "time limit" web-Ausnahme innerhalb der callback-Funktion

Die 4. Möglichkeit ist, die ist die Verzögerung meiner Anwendung, und ich weiß nicht, wie zu kürzen, dass eine Verzögerung

Update
Gibt es eine Möglichkeit, dass die Methode GetResponseStream statt der GetResponse ist, die bewirkt, dass der timeout?

InformationsquelleAutor Jader Dias | 2008-12-22

Schreibe einen Kommentar