Rufen Sie die externe api von Web-API synchron
Muss ich anrufen einer externen api von meiner Web-API-2-controller, ähnlich wie die Anforderung hier:
Aufruf externer HTTP-Dienst mit HttpClient von einer Web-API-Aktion
Jedoch, die Lösung oben Hinzugefügt werden müssen die async
Schlüsselwort, um meine api-Methode die GET-Aufruf, so dass mein Aufruf asynchron. Ich bevorzuge die gegenwärtigen Kunden von mein-API mit einer synchronen Methode, aber immer noch in der Lage, um die externe api von meinen eigenen (und muss es zurück, bevor mein api gibt). Gibt es eine Möglichkeit, dies zu tun?
InformationsquelleAutor mayabelle | 2015-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Blockiert ein
async
Betrieb kann gefährlich sein. Es tut weh, Leistung und könnte zu einem Deadlock führen (mehr in Sollte ich aussetzen synchronen Wrapper für asynchrone Methoden?)Aber wenn du sicher bist, dass das, was Sie tun möchten, ist Es besser, IMO zu verwenden
GetAwaiter().GetResult()
:Ist es das gleiche ob es ein
Task
oderTask<T>
, es ist die gleiche Ausschreibungawait
übersetzt (wenn auch mitawait
die Aufgabe bereits abgeschlossen) undTask.Result
(oderTask.Wait
) umschließt alle Ausnahmen inAggregateException
währendGetAwaiter().GetResult()
wirft nur die ersteException
alsawait
tut.InformationsquelleAutor i3arnon