Asyncowe metody w web api

0

Przez Web Api wywołuję jakąś akcję, która ma swoją logikę.

Jednym ze stepów jest wywołanie:

var httpClient = new HttpClient();
httpClient.PostAsync(jakisUrl, content);

Czy nie powiniennem czekać na resulta z takich wywołań? Czy zakończenie przetwarzania mojego calla do web api nie zabije czasem tego posta?

0

Robisz tak zwane fire&forget, request nie zostanie zabity, ale bez czekania nie obsłużysz ewentualnych błędów.

0

Czy aby na pewno ?

True fire and forget tasks can be difficult in asp.net as they can often die along with the request that they were created as part of.>

Problem jaki mi zgłoszono, to czasami task się wykonuje... czasami nie. PostAsync akurat wysyła większy strumień danych do innego serwera.

0

Jak dla mnie to powinieneś zrobić awaita, zaczekać na wynik i na bazie kodu odpowiedzi z PostAsync zwrócić coś w swoim Api czy się to udało czy nie.

0

w C# jest nowy sposob na wysylanie requestow

https://www.stevejgordon.co.uk/introduction-to-httpclientfactory-aspnetcore
https://www.thomaslevesque.com/2016/12/08/fun-with-the-httpclient-pipeline/

a dwa sporo robisz PostAsync powinienes robic tam await. Jezeli nie potrzebujesz rezultatu to nie ma problemu, Niech funkcja zwraca Task i dodajesz normalnie await do swojego PostAsync i tyle

0
wasiu napisał(a):

Czy aby na pewno ?

Inaczej, zakończenie przetwarzania calla nie zabija bezpośrednio requesta fire & forget, ale też nie powstrzymuje IIS od zabicia jego, a to może się zdarzyć jeśli nie ma żadnej innej aktywności w web api, wtedy bodaj domyślnie po 20 minutach, a także dodatkowo bodaj co 26 godzin przy domyślnych ustawieniach.

Aczkolwiek bardziej bym podejrzewał jakieś przejściowe problemy z siecią na które nie jesteś w stanie zareagować bo nie czekasz na błędy, niż to że IIS Ci ubił requesta.

1 użytkowników online, w tym zalogowanych: 0, gości: 1