Frage

Ich habe ein großes Problem Umgang mit Daten, die ich zu Download versuchen, in meiner Anwendung über das Internet via HttpWebResponse. Mein Code sieht wie folgt aus:

myWebRequest.Timeout = 10000; 

using (HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse())
{
     using (Stream ReceiveStream = myWebResponse.GetResponseStream())
     {
         Encoding encode = Encoding.GetEncoding("utf-8");
         StreamReader readStream = new StreamReader(ReceiveStream, encode);
         // Read 1024 characters at a time.
         Char[] read = new Char[1024];

         int count = readStream.Read(read, 0, 1024);

         int break_counter = 0;
         while (count > 0 && break_counter < 10000)
         {
             String str = new String(read, 0, count);
             buffer += str;
             count = readStream.Read(read, 0, 1024);
             break_counter++;
         }
    }
}

Dieser Code läuft in wenigen Fällen in getrennten Threads, so dass es ein wenig ist etwas schwer zu debuggen. Das Problem ist, diese Methode stecken geblieben und ich Schuld auf die schlechte Verbindung zum Daten.

Wie man sehen kann ich bereits ein Timeout und wurde mit dem Code der Hoffnung, würde nur beenden, nachdem die Timeout-Zeit abgelaufen ist. Es tut nicht! Zumindest nicht die ganze Zeit. Manchmal habe ich einen WebException / Timeout aber ein paar Mal es einfach stecken geblieben.

Was ist genau ein Timeout? Wann ist es genannt? Sagen wir die HttpWebResponse beginnt, Daten zu empfangen, aber es in der Mitte der Übertragung stecken irgendwo bekam. Muss ich eine Auszeit bekommen? Für mich sieht es aus wie ich nicht tun, weil meine Anwendung zu stecken geblieben und keine Timeout Ausnahme.

Was kann ich tun, um diese bis patchen oder wie kann ich weitere Informationen über das, was hier schief geht?

War es hilfreich?

Lösung

Versuchen Sie HttpWebRequest.ReadWriteTimeout Property Einstellung

  

Die Anzahl der Millisekunden, bevor die   Schreiben oder Lesen mal aus. Das   Standardwert ist 300.000 Millisekunden   (5 Minuten).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top