Heim >Backend-Entwicklung >C++ >Warum ruft mein httpclient.getAsync auf, wenn ich Await/Async in ASP.NET verwendete?
Der Grund, warum HttpClient.GetAsync(...) hängt, wenn Await/Async in ASP.NET verwendet wird
In ASP.NET kann jeweils nur ein Thread eine Anfrage bearbeiten. Obwohl eine parallele Verarbeitung möglich ist, besitzt nur ein Thread den Anforderungskontext. Diese Thread-Verwaltung wird vom ASP.NET SynchronizationContext gesteuert.
Wenn Methoden auf eine Aufgabe warten, werden sie normalerweise im erfassten SynchronizationContext (oder im TaskScheduler, falls dieser nicht vorhanden ist) fortgesetzt. Dies steht im Einklang mit dem erwarteten Verhalten asynchroner Controller-Operationen.
Problem in Testfall 5
Der Deadlock in Test5Controller.Get ist auf die folgende Reihenfolge zurückzuführen:
Lösen Sie das Problem
Es gibt einige Best Practices, die implementiert werden können, um ähnliche Probleme zu vermeiden:
Fazit
Das Verständnis der Rolle von SynchronizationContext und der Best Practices für die Verwendung der Async/Await-Technologie kann einen effizienten und Deadlock-freien Betrieb bei der Arbeit mit asynchronem Code in ASP.NET gewährleisten.
Das obige ist der detaillierte Inhalt vonWarum ruft mein httpclient.getAsync auf, wenn ich Await/Async in ASP.NET verwendete?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!