Служба Windows теряет Интернет через 40 минут

У меня есть простая служба Windows (C#), которая использует таймер для проверки внешнего API каждые 15 минут.

Служба работает нормально до тех пор, пока машина не спит, а после нескольких итераций (около 40 минут) теряет Интернет и время ожидания всех запросов. Это поведение воспроизводимо на компьютерах, учетных записях и т. Д. И не восстанавливается до перезапуска службы.

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

Мы попытались запустить его под пользовательскими учетными записями / учетными записями администратора, учетными записями NetworkService и LocalService, позволить пользователю работать как ОС, настраивать энергосберегающие конфигурации, пробовать несколько компьютеров (7 и сервер 08), переносить весь код в приложение WinForms. - все с одинаковым поведением.

Я убираю волосы и надеюсь, что "работа с Fiddler" вызовет удивление у кого-то из знающих... Мой следующий тест - написать "службу контроллера", которая останавливает / перезапускает первую службу, но я ненавижу это решение.

* обновлено, вот код, который делает запросы API

    HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uriDomain + uriLogin);
    WebResponse resp = req.GetResponse();

и скачивает доступные файлы

    using (WebClient client = new WebClient())
    {
        client.Headers["Cookie"] = persistCookie;
        client.DownloadFile(uriDomain + fileName, localStoragePath + fileName);
    }

.Net CLR должен перерабатывать соединения - для этих объектов нет явного закрытия и т. Д. Кроме того, я не понимаю, как запуск Fiddler заставляет все работать нормально.

Спасибо

1 ответ

Похоже, у вас кончились связи.

Быстрый тест будет состоять в том, чтобы изменить время с 15 минут до 1 минуты, а затем повторить тест. Если происходит сбой быстрее, то есть большая вероятность, что служба неправильно закрывает соединения. В конце концов вы достигнете предела.

Другие вопросы по тегам