Štoperica može prestati čekati dok se HTTP zahtjev nastavlja. Osigurajte otkazivanje samoj operaciji kada pokušaj preko proxyja ima predviđeni budžet.

Za modernu .NET aplikaciju s postojećim HttpClient konfiguriranim za proxy:

using var budget = new CancellationTokenSource(TimeSpan.FromSeconds(5));
using var response = await client.GetAsync(
    targetUrl,
    HttpCompletionOption.ResponseHeadersRead,
    budget.Token);
response.EnsureSuccessStatusCode();
string body = await response.Content.ReadAsStringAsync(budget.Token);

Isti budžet počinje prije postavljanja i ostaje aktivan dok se tijelo čita. ResponseHeadersRead vraća kontrolu nakon zaglavlja, pa HttpClientov vlastiti timeout završetka sam po sebi ne određuje kasniji budžet čitanja tijela.

Držite otkazivanje odvojeno od HTTP statusa i transportnih grešaka. OperationCanceledException može doći od dostavljenog tokena ili drugog konfigurisanog timeouta; provjerite primjenjivi izvor otkazivanja umjesto da svaki neuspjeh prijavljujete kao mrtav proxy.

Ponovno koristite klijenta koji posjeduje ovu proxy rutu. Otkazivanje pokušaja ne mora značiti ponovnu izgradnju cijelog pula veza za svaki kasniji zahtjev.

Primjer baferira konačno tijelo odgovora. Streaming preuzimanje treba proslijediti token kroz svoju petlju kopiranja toka i osloboditi odgovor na svakoj izlaznoj putanji.

Otkazivanje izražava politiku operacije, a ne tačno obećanje stvarnog vremena za svaku radnju platforme. Izbjegavajte da ga zamijenite beskonačnom petljom provjeravanja Task.IsCompleted.

Povezani članci