Führen Sie eine hintergrund-task aus einer controller-action in asp.net core 2

Ich bin der Entwicklung einer web-Applikation mit einer REST-Api mit C# mit asp.net core 2.0

Was ich erreichen möchte ist, wenn der client eine Anfrage senden an einen Endpunkt ich werde führen Sie eine hintergrund-Aufgabe, getrennt von der client-Anfrage-Kontext wird beendet, wenn die Aufgabe erfolgreich gestartet wurde.

Ich weiß, es ist HostedService aber das problem ist, dass die HostedService gestartet, wenn der server startet, und soweit ich weiß, gibt es keinen Weg, um zu starten die HostedService manuell von einem controller.

Hier ist ein einfacher code, der demonstrieren Frage.

[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);
    }
}
  • Verwenden Sie ein Drittanbieter-tool wie Hangifre, aber es muss Tausende von ähnlichen Fragen zu diesem hier.
  • Danke für den Kommentar, ich landete mit Hangfire, es ist sehr mächtig. Prüfen, schreiben eine Antwort, so kann ich es akzeptieren.
  • Ich landete mit Hangfire zu, so einfach zu bedienen, im Vergleich zu faffing über die mit einem HostedService. Sollten Sie auf jeden Fall setzen das als Antwort
InformationsquelleAutor Waxren | 2018-04-13
Schreibe einen Kommentar