So führen Sie die asynchrone Operation 'fire and forget' in der ASP.NET-Web-API aus [duplizieren]

8

Also, ich habe diese Web-API-Aktion, die eine asynchrone Funktion ausführt.

%Vor%

Ich möchte eigentlich, dass die Controller-Aktion zum Client zurückkehrt, während die asynchrone Operation ausgeführt wird.

Ich habe das gemacht und ich bekomme eine Ausnahme:

%Vor%

Wie kann ich das bitte erreichen?

Danke

    
kooldave98 12.11.2013, 00:29
quelle

1 Antwort

13

Was Sie tun wollen, ist extrem gefährlich . Ich habe einen Blogbeitrag, der erklärt, warum dies eine schlechte Idee ist, einschließlich Code für eine BackgroundTaskManager type minimiert die Wahrscheinlichkeit, dass etwas schief geht . Leider, selbst wenn Sie Ihre Hintergrundarbeit mit der ASP.NET-Laufzeit registrieren, ist es immer noch eine schlechte Idee, sich auf dieses Verhalten zu verlassen.

Die richtige Lösung besteht darin, dass Ihre WebAPI-Anforderung eine Anforderung in eine zuverlässige Warteschlange (z. B. Azure-Warteschlange) platziert und ein unabhängiger Dienst (z. B. eine Azure-Worker-Rolle) diese Warteschlange verarbeitet.

    
Stephen Cleary 12.11.2013, 00:50
quelle