Как я могу использовать службу вне Startup.cs в моем ASP. NET Базовом приложении? - PullRequest
0 голосов
/ 05 марта 2020

У меня есть 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);
}

Я не совсем уверен, возможно ли это, но любое понимание может быть полезным.

1 Ответ

0 голосов
/ 05 марта 2020

Первый вопрос, нужно ли вам каждый раз добавлять эту работу в качестве новой службы.

Если вы хотите использовать приложение в качестве планировщика, то лучше всего использовать IHostedService - Ссылка на документацию .

Вот несколько примеров использования IHostedService для создания простой планировщик - Пример планировщика на основе IHostedService

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...