I want to send multiple WebRequest
. I used a Parallel.For
loop to do that but the loop runs once and the second time it gives error while getting response.
Error:
The operation has timed out
Code :
Parallel.For(0, 10, delegate(int i) {
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(
new Uri("http://www.mysite.com/service"));
string dataToSend = "Data";
byte[] buffer = System.Text.Encoding.GetEncoding(1252).
GetBytes(dataToSend);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = buffer.Length;
request.Host = "www.mysite.com";
Stream requestStream = request.GetRequestStream();
requestStream.Write(buffer, 0, buffer.Length);
requestStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
});
-
2It gives you an error message? Really? And is there some particular particular question you would like to ask?Darin Dimitrov– Darin Dimitrov09/19/2011 21:05:05Commented Sep 19, 2011 at 21:05
-
What is the exception, where does it occur? Are you sure the server isn't actually timing out?Panagiotis Kanavos– Panagiotis Kanavos09/20/2011 10:44:09Commented Sep 20, 2011 at 10:44
2 Answers 2
Most likely the problem is that you need to call response.Close()
after you're done processing the response.
In addition to what Jim Mischel said about calling Close on the response, you also need to factor in that, by default, .NET limits an application to only two active HTTP connections per domain at once. To change this you can set System.Net.ServicePointManager.DefaultConnectionLimit
programmatically or set the same thing via config using the <system.net><connectionManagement>
configuration section.
Explore related questions
See similar questions with these tags.