У меня есть ASP. NET Базовое приложение, которое служит своего рода «планировщиком заданий», поэтому мне нужно, чтобы приложение запускало задание cron для настроенных заданий. Я нашел метод для этого, но, к сожалению, он работает только в файле Startup.cs, используя абстрактный класс IServiceCollection. Из-за особенностей этого приложения мне нужно иметь возможность добавить задание cron в моем контроллере, когда сделан пост-запрос.
Вот как я добавляю задание cron в Startup.cs :
public void ConfigureServices(IServiceCollection services)
{
// Basic config code above here
services.AddCronJob<CronJob>(c =>
{
c.TimeZoneInfo = TimeZoneInfo.Local;
c.CronExpression = @"" + cronEx;
Console.WriteLine(c.CronExpression);
});
}
}
Вот мой контроллер API и то, что я пытаюсь сделать:
// POST: api/Jobs
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see https://aka.ms/RazorPagesCRUD.
[HttpPost]
public async Task<ActionResult<Job>> PostJob(Job job)
{
_context.Job.Add(job);
await _context.SaveChangesAsync();
services.AddCronJob<CronJob>(c =>
{
c.TimeZoneInfo = TimeZoneInfo.Local;
c.CronExpression = @"" + job.CronExpression;
});
return CreatedAtAction("GetJob", new { id = job.Id }, job);
}
Я не совсем уверен, возможно ли это, но любое понимание может быть полезным.