Appel d'api externe à partir de l'API Web de façon synchrone
J'ai besoin d'appeler une api externe à partir de mon site Web API 2 contrôleur, semblable à l'exigence ici:
L'appel externe service HTTP à l'aide HttpClient à partir d'une API Web d'Action
Cependant, la solution ci-dessus nécessite l'ajout de la async
mot-clé pour mon api de la méthode d'OBTENIR de l'appel, et donc de faire de mon appel asynchrone. Je préfère présenter aux clients de mon API avec une méthode synchrone, mais encore être en mesure d'appeler l'api externe à partir de ma propre (et aura besoin que de retourner devant mon api retourne). Est-il un moyen de faire cela?
Vous devez vous connecter pour publier un commentaire.
De blocage sur un
async
opération pourrait être dangereux. Il affecte les performances et pourrait conduire à des blocages (de plus en Dois-je exposer synchrone des wrappers pour des méthodes asynchrones?)Mais si vous êtes sûr que ce que vous voulez faire, C'est mieux de l'OMI à utiliser
GetAwaiter().GetResult()
:C'est la même chose si c'est un
Task
ouTask<T>
, c'est le même appelawait
se traduit par (bien qu'avecawait
la tâche déjà achevée) etTask.Result
(ouTask.Wait
) enveloppe des exceptions dansAggregateException
toutGetAwaiter().GetResult()
jette seulement la premièreException
commeawait
n'.