Et stopur kan stoppe med at vente, mens HTTP-anmodningen fortsætter. Giv annullering til selve handlingen, når et forsøg via proxy har et tilsigtet budget.

Til en moderne .NET-applikation med en eksisterende proxy-konfigureret HttpClient:

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);

Det samme budget starter før opsætningen og forbliver aktivt, mens body læses. ResponseHeadersRead giver kontrollen tilbage efter headere, så HttpClients egen afslutningstimeout definerer ikke i sig selv det senere budget for body-læsning.

Hold annullering adskilt fra HTTP-status og transportfejl. En OperationCanceledException kan komme fra det leverede token eller fra en anden konfigureret timeout; undersøg den relevante annulleringskilde i stedet for at rapportere hver fejl som en død proxy.

Genbrug den klient, der ejer denne proxy-rute. Annullering af et forsøg behøver ikke betyde genopbygning af en hel forbindelsespulje til hver senere anmodning.

Eksemplet buffer en endelig svarbody. En streaming-download bør sende token gennem sin stream-kopiløkke og frigive svaret på hver udgangsvej.

Annullering udtrykker en handlingspolitik, ikke et præcist løfte om vægur-tid for hver underliggende platformshandling. Undgå at erstatte det med en endeløs polling-løkke over Task.IsCompleted.

Relaterede artikler