Ответ 1
Скорее всего, проблема в том, что вам нужно позвонить response.Close()
после того, как вы закончите обработку ответа.
Я хочу отправить несколько WebRequest
. Я использовал цикл Parallel.For
, чтобы сделать это, но цикл запускается один раз, а во второй раз он дает ошибку при получении ответа.
Ошибка:
Операция завершена
Код:
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();
});
Скорее всего, проблема в том, что вам нужно позвонить response.Close()
после того, как вы закончите обработку ответа.
В дополнение к тому, что Джим Мишель сказал о вызове Close на ответ, вам также необходимо учитывать, что по умолчанию .NET ограничивает приложение только двумя активными HTTP-соединениями на один домен одновременно. Чтобы изменить это, вы можете программно установить System.Net.ServicePointManager.DefaultConnectionLimit
или установить то же самое через конфигурацию, используя <system.net><connectionManagement>
конфигурации.