Подтвердить что ты не робот

Отправить несколько WebRequest в Parallel.For

Я хочу отправить несколько 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();
});
4b9b3361

Ответ 1

Скорее всего, проблема в том, что вам нужно позвонить response.Close() после того, как вы закончите обработку ответа.

Ответ 2

В дополнение к тому, что Джим Мишель сказал о вызове Close на ответ, вам также необходимо учитывать, что по умолчанию .NET ограничивает приложение только двумя активными HTTP-соединениями на один домен одновременно. Чтобы изменить это, вы можете программно установить System.Net.ServicePointManager.DefaultConnectionLimit или установить то же самое через конфигурацию, используя <system.net><connectionManagement> конфигурации.