У меня есть развернутая облачная служба Azure WebRole WebAPI только с одним экземпляром. Я заметил, что если я подожду некоторое время простоя (без HTTP-запросов), то позже служба будет мертва, и каждый запрос к ней приведет к следующему ответу:
{
Message: "An error has occurred."
}
На панели управления Azure отображается статус экземпляра "Работает". Удаленный рабочий стол показывает, что пул приложений и веб-сайт работают, и что все необходимые службы работают.
Я нигде не могу найти ни одного соответствующего сообщения об ошибке ...
Единственное решение, которое я нашел для вышеуказанной ситуации, - это выполнить перезагрузку виртуальной машины экземпляра.
Поскольку я предположил, что приведенное выше является результатом времени простоя, я посмотрел и обнаружил, что по умолчанию сам пул приложений имеет свойство Idle Timeout, установленное на 20 минут, что приводит к завершению работы рабочего процесса внутри пула приложений после истечения времени ожидания простоя. . Мне удалось воспроизвести проблему, не дожидаясь тайм-аута, вручную запустив повторную переработку пула приложений.
Я предполагаю, что у меня какая-то проблема с моей службой, и я не могу правильно восстановиться после выключения. В качестве доказательства: чистый готовый сервисный проект не привел к такому же поведению.
Что может вызвать такую проблему?
Может ли кто-нибудь указать мне правильное направление отладки этого?
Где я могу найти полезное сообщение об ошибке?
Изменить:
Я использую Autofac для IoC, и мне внезапно пришло в голову, что проблема может заключаться в том, что IoC каким-то образом очищается после повторного использования. Я выполняю регистрацию IoC внутри Application_Start()
из Global.asax.cs
.
Может быть проблема?