Anularea unei cereri .NET HttpClient prin proxy cu un token de termen
Anulați operația de rețea în sine când expiră termenul proxy-ului, în loc să limitați doar așteptarea apelantului.
Transmiteți termenul operației care poate anula munca de rețea. Pentru un .NET HttpClient existent configurat prin proxy:
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);Aplicația furnizează client și uri. Această suprascriere primește tokenul de anulare; un timeout în jurul așteptării sarcinii sale ar limita doar așteptarea acelui apelant. Interogarea unui indicator de finalizare are aceeași problemă: apelantul poate pleca în timp ce socketurile și lucrătorii rămân ocupați.
Anularea urmează implementarea clientului și calea de curățare. Nu promite că fiecare acțiune de nivel inferior se oprește la o instrucțiune exactă. Lăsați acea cale să se termine și eliberați resursele deținute de operație. Includeți în proiect citirea corpului controlată separat; pentru o operație .NET ResponseHeadersRead modernă, transmiteți același token prin citirea corpului. Alți clienți oferă propriile interfețe de anulare, întrerupere și curățare.
O nouă încercare are nevoie de un rezultat pentru încercarea anterioară. Păstrați identificatorul și proxy-ul ales, solicitați anularea când este necesar și evitați pierderea sarcinii în timp ce porniți înlocuitori la nesfârșit. Altfel un endpoint lent poate acumula muncă mai repede decât o eliberează aplicația.
Rezultatul de la distanță necesită o tratare separată. Destinația poate fi primit deja o trimitere când are loc anularea. Folosiți politica de recuperare sau de idempotență a aplicației; oprirea muncii locale nu anulează o acțiune de la distanță.