Служба 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 минуты, а затем повторить тест. Если происходит сбой быстрее, то есть большая вероятность, что служба неправильно закрывает соединения. В конце концов вы достигнете предела.