У меня есть простое задание cron HostedService, использующее этот абстрактный класс. Я создал TestCronJob
с StartAsync
методом, который просто регистрируется при запуске:
TestCronJob.cs
public override Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("TestCronJob started");
return base.StartAsync(cancellationToken);
}
Startup.cs
services.AddCronJob<TestCronJob>(c =>
{
c.TimeZoneInfo = TimeZoneInfo.Local;
c.CronExpression = @"*/5 * * * *";
});
Когда я нахожусь на локальном компьютере и запускаю свое приложение, StartAsync
запускается, и я вижу «TestCronJob начался» в моих журналах. Однако, когда я выпускаю свое приложение в IIS (через Azure DevOps), «TestCronJob начался» не будет регистрироваться, пока не будет вручную сделан запрос к конечной точке, которую я имею в одном из моих контроллеров.
Это поведение по умолчанию или я что-то не так делаю? Есть ли способ автоматически запускать мою работу cron в моем приложении на IIS, когда я выпускаю новую сборку на свой сервер?