Я разрабатываю веб-приложение с REST Api, используя С# с asp.net core 2.0
То, что я хочу достичь, - это когда клиент отправляет запрос конечной точке, я буду запускать фоновую задачу, отделенную от контекста запроса клиента, которая будет завершена, если задача начнется успешно.
Я знаю, что есть HostedService, но проблема в том, что HostedService запускается при запуске сервера, и насколько я знаю, нет способа запустить HostedService вручную с контроллера.
Вот простой код, который демонстрирует вопрос.
[Authorize(AuthenticationSchemes = "UsersScheme")]
public class UsersController : Controller
{
[HttpPost]
public async Task<JsonResult> StartJob([FromForm] string UserId, [FromServices] IBackgroundJobService backgroundService) {
//check user account
(bool isStarted, string data) result = backgroundService.Start();
return JsonResult(result);
}
}