Question

J'ai un gros problème concernant les données que je tente de télécharger dans ma demande sur Internet via HttpWebResponse. Mon code ressemble à ça:

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++;
         }
    }
}

Ce code fonctionne dans quelques cas dans des threads séparés il est donc un peu difficile à déboguer. Le problème est cette méthode est resté coincé et je blâme sur la mauvaise connexion aux données.

Comme vous pouvez le voir je l'ai déjà mis un temps mort et espérait le code serait tout simplement se terminer après le délai d'attente a expiré. Ce ne est pas! Du moins pas tout le temps. Parfois, je reçois un WebException / délai d'attente, mais quelques fois il est resté coincé juste.

Qu'est-ce qu'un délai d'attente exactement? Quand est-il appelé? Disons que le HttpWebResponse commence à recevoir des données mais il est resté coincé quelque part au milieu de la transmission. Est-ce que je reçois un délai d'attente? Pour moi, il semble que je ne suis pas parce que ma demande est resté coincé trop et pas une exception de délai d'attente est élevé.

Que puis-je faire pour patcher ou comment puis-je obtenir de plus amples informations sur ce qui se passe mal ici?

Était-ce utile?

La solution

Essayez de régler HttpWebRequest.ReadWriteTimeout Propriété

  

Le nombre de millisecondes avant la   l'écriture ou la lecture de fois sur. le   valeur par défaut est de 300.000 millisecondes   (5 minutes).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top