Имеется приложение ASP NET Core (сайт), размещённое на веб сервере IIS.
Приложение, с помощью BackgroundService запускает headless экземпляр CefSharp с определённой страницей (открывается web клиент whatsapp).
Пользователь, в процессе работы с основным сайтом, передаёт команды, которые затем выполняются в CefSharp.
Обнаружил по логам, что примерно через час отсутствия активностей, при повторном обращении к сайту, происходит перезапуск BackgroundService. Следовательно BackgroundService в какой-то момент перестаёт работать, что для меня неожиданно, т.к. BackgroundService как раз и нужен для выполнения постоянных задач.
Как можно заставить работать BackgroundService постоянно?
упрощённый код:
Program.cs
builder.Services.AddHostedService<WhatsappService>();
WhatsappService.cs
public class WhatsappService : BackgroundService {
public static ChromiumWebBrowser WebView;
private static System.Timers.Timer TimerSend; // timer
// init
public WhatsappService() {
TimerSend = new(10000);
TimerSend.Elapsed += OnTimedSendEvent;
TimerSend.AutoReset = true;
TimerSend.Enabled = true;
}
// start Background service
protected override async Task ExecuteAsync(CancellationToken stoppingToken) {
await StartWhatsapp(); // start Whatsapp Service
}
// start Whatsapp Service
private async Task<Result> StartWhatsapp() {
if(!Cef.IsInitialized ) {
// Cef.Initialize
}
WebView = new("https://web.whatsapp.com/"); // goto whatsapp page
return result;
}
}