Программа зависает на третьей итерации (HTTPWebRequest) C # - PullRequest
0 голосов
/ 09 августа 2011

У меня сейчас странная проблема.Я тестирую время отклика веб-сайта, но когда метод зацикливается в третий раз (для определения времени соединения), он зависает:

internal class Program
{

        Console.ReadLine();

        loop();
    }
}

Вывод перед зависанием: «Таймер ответа HTTP», поэтомуЯ предполагаю, что это как-то связано с работающим экземпляром.

Ответы [ 2 ]

5 голосов
/ 09 августа 2011

Вы должны закрыть ответ. В противном случае вы достигнете максимума открытых соединений.

Используйте оператор использования, это самый простой способ закрыть и удалить ответ:

using(HttpWebResponse response = (HttpWebResponse)request.GetResponse()){

   // .. here some action if any
}
2 голосов
/ 09 августа 2011

Вы не утилизируете ответ, а это означает, что он висит на соединении из предыдущих запросов.Затем новый запрос ожидает получения этого соединения из пула и блокирует его, поскольку старый ответ по-прежнему «владеет» соединением. Просто измените свой код на:

// You weren't really using the HttpWebResponse class anyway, so why cast?
using (var response = request.GetResponse())
{
}

Неужели вы действительно хочешь рекурсировать хоть?Почему вы не зацикливаетесь, используя:

while(true)
{
    GetResponse();
}

или что-то подобное?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...