Bonjour,

Je code une application console en C# qui dans une boucle contacte une page Web en lui passant des paramètres POST. Au premier tour de boucle tout fonctionne parfaitement mais dès le deuxième la méthode GetRequestStream() (qui récupère les données contenues dans la requête) génère une erreur de timeout :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
while( i >= 0 && (i < i2 || i2 < 0) ) 
						{
 
							HttpWebRequest HttpWReq2 = (HttpWebRequest)WebRequest.Create("http://titi/toto.asp");
							//HttpWReq2.KeepAlive = false;
							HttpWReq2.Method = "POST";
							HttpWReq2.ContentType = STR_CONTENT_TYPE;
							encoding = new System.Text.ASCIIEncoding();
							string postData2 = "numgec=" + numgec;
							byte[] byte1 = encoding.GetBytes(postData2);
							HttpWReq2.ContentLength = postData2.Length;
							Stream newStream = HttpWReq2.GetRequestStream(); // <===== plantage ici
 
							newStream.Write(byte1,0,byte1.Length);
							Console.WriteLine(newStream.ToString() + " "+ HttpWReq2.Address + " " + HttpWReq2.ContentLength);
							HttpWebResponse HttpWResp2 = (HttpWebResponse)HttpWReq2.GetResponse();
							enc = System.Text.Encoding.GetEncoding(1252);
							loResponseStream = new StreamReader(HttpWResp2.GetResponseStream(), enc);
							string s2 = loResponseStream.ReadToEnd();
							loResponseStream.Close();
							HttpWResp2.Close();
 
[...]
}
Quelqu'un aurait-il une idée de la cause du problème ? J'ai lu quelque part qu'il fallait éviter le KeepAlive=false mais le retirer ne change rien à l'affaire...