OVH Cloud OVH Cloud

HttpWebRequest avec bcq de Requêtes simultanées

2 réponses
Avatar
Yaume
Bonjour,

J'ai un problème avec l'utilisation massive de HttpWebRequest en parallèlle.
Voila j'ai un programme de test en version console et en version page aspx.
Dedans je désire appeller disons 100 fois en même temps une url simple (un
.gif par exemple).
En fait au bout d'un certain nombre (variable) d'appel au GetResponse,
httpWebRequest semble se bloquer jusqu'à faire un timeout (que j'ai précisé).
J'ai lu que HttpWebRequest parallélisait ses requêtes avec le ThreadPool.
J'ai donc ajouter un timer qui m'affiche régulièrement l'état de celui-ci
(minimum, maximum et available) : il ne change pas !
Quel qu'un peut-il m'apporter des élements de réponse ?

merci.

2 réponses

Avatar
Patrice Manac'h
Bonjour,

deux choses :
- il se modifie via le fichier macine.config.
- la norme http limite le nombre d'appels simultanés vers une adresse à 2.
Recherchez maxConnection dans le fichier machine.config et testez la
modification de la valeur indiquée.

Cordialement,

Patrice Manac'h
MCS France

"Yaume" a écrit dans le message de news:

Bonjour,

J'ai un problème avec l'utilisation massive de HttpWebRequest en
parallèlle.
Voila j'ai un programme de test en version console et en version page
aspx.
Dedans je désire appeller disons 100 fois en même temps une url simple (un
.gif par exemple).
En fait au bout d'un certain nombre (variable) d'appel au GetResponse,
httpWebRequest semble se bloquer jusqu'à faire un timeout (que j'ai
précisé).
J'ai lu que HttpWebRequest parallélisait ses requêtes avec le ThreadPool.
J'ai donc ajouter un timer qui m'affiche régulièrement l'état de celui-ci
(minimum, maximum et available) : il ne change pas !
Quel qu'un peut-il m'apporter des élements de réponse ?

merci.


Avatar
Simon Mourier [SoftFluent]
Un truc (qui n'a peut-être rien à avoir dans votre cas) à connaitre pour
utiliset HttpWebRequest: il faut absolument fermer le flux avant d'envoyer
les requêtes, sinon on a le comportement que vous décrivez. Par exemple:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Accept = "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2";
request.KeepAlive = false;
request.ContentType = "application/x-www-form-urlencoded";

string s = "machaine....blabla...";
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(s);
request.ContentLength = bytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();


Simon.
www.softfluent.com

"Yaume" a écrit dans le message de news:

Bonjour,

J'ai un problème avec l'utilisation massive de HttpWebRequest en
parallèlle.
Voila j'ai un programme de test en version console et en version page
aspx.
Dedans je désire appeller disons 100 fois en même temps une url simple (un
.gif par exemple).
En fait au bout d'un certain nombre (variable) d'appel au GetResponse,
httpWebRequest semble se bloquer jusqu'à faire un timeout (que j'ai
précisé).
J'ai lu que HttpWebRequest parallélisait ses requêtes avec le ThreadPool.
J'ai donc ajouter un timer qui m'affiche régulièrement l'état de celui-ci
(minimum, maximum et available) : il ne change pas !
Quel qu'un peut-il m'apporter des élements de réponse ?

merci.