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

Веб-запрос С# HTTP не позволяет синхронизировать время

Я делаю Http Webrequest доступным сайтом, который я могу посетить, но HTTP-запрос хранит тайм-аут. Есть ли причина, почему этот код может позволить ему тайм-аут, когда он не должен?

Я попытался увеличить настройку таймаута, но он все равно продолжает истекать время.

    Uri CameraUrl = new Uri("http://" + cfg_cameraIps[i]);
    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(CameraUrl);
    myRequest.Timeout = 5000;

    myRequest.Method = "HEAD";

    try
    {
        HttpWebResponse webresponse;
        webresponse = (HttpWebResponse)myRequest.GetResponse();

        if (webresponse.StatusCode.ToString() == "OK")
        {
            continue;
        }
4b9b3361

Ответ 1

Вы не закрываете свой веб-ответ - если вы обнаружите, что работают первые пару запросов, но после этого этого не делают, то эта проблема. Он пытается повторно использовать существующее соединение с сервером, но это невозможно, потому что вы не закрыли ответ.

Измените свой код на:

using (HttpWebResponse webresponse = (HttpWebResponse) myRequest.GetResponse())
{
    if (webresponse.StatusCode == HttpStatusCode.OK)
    {
        continue;
    }
    ...
}

и посмотрите, помогает ли это.

Если он не с самого первого запроса на сервер, то что-то другое. В этом случае используйте Wireshark, чтобы узнать, что происходит на сетевом уровне.

Обратите внимание, что в приведенном выше коде я также удалил преобразование строк в пользу сравнения кодов состояния напрямую.