У меня есть веб-приложение, разработанное с использованием. net core 3. Я развернул его на хостинге под управлением IIS. Одним из наиболее важных модулей моего приложения являются запланированные задачи, которые должны выполняться в течение всего срока службы приложения. Проблема, с которой я столкнулся, заключается в том, что приложение останавливается после 1 или 2 часов бездействия.
Я развертываю приложение с использованием «вне процесса». Чтобы достичь цели, я инициализировал приложение с этим кодом на Program.cs
:
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseIISIntegration();
webBuilder.UseEnvironment(EnvironmentName);
webBuilder.UseStartup<Startup>();
});
Также я установил эти настройки на .scproj
<PropertyGroup>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>
Затем я проверяю свои заголовки. Я вижу эту запись в заголовках моих ответов:
Server: Kestrel
Мои расписания реализованы IHostedService
и должны выполняться как фоновые задачи.
Все вышеперечисленное дает мне мнение о том, что приложение должно работать без остановок и не должно утилизироваться IIS, поскольку оно работает на Kestrel и использует IIS только в качестве прокси-сервера. Но на самом деле все иначе. Используя журналы, я вижу, как через час или два мое приложение перестает работать и больше не регистрируется.
Кроме того, у меня нет доступа к IIS, потому что это не по моему разрешению, поэтому я могу не меняйте настройки. У кого-нибудь есть идеи, как заставить мое приложение работать без остановок?