Erabili CancellationToken bakarra .NET HttpClient-en goiburuetarako eta gorputzerako
Eraman eskaeraren CancellationToken-a HttpClients-en erantzunaren prestaketan zein gorputzaren irakurketan, deitzailearen itxaronaldia soilik neurtu ordez.
Kronometro batek itxaroteari utz dakioke HTTP eskaerak jarraitzen duen bitartean. Eman ezeztapena eragiketari berari proxy bidezko saiakera batek aurreikusitako aurrekontua duenean.
proxyrako konfiguratutako HttpClient bat duen .NET aplikazio moderno baterako:
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);
Aurrekontu bera prestaketaren aurretik hasten da eta gorputza irakurtzen den bitartean aktibo jarraitzen du. ResponseHeadersRead-ek goiburuen ondoren itzultzen du kontrola, beraz HttpClients-en amaiera-denbora-mugak ez du berez zehazten geroagoko gorputz-irakurketaren aurrekontua.
Eduki ezeztapena HTTP egoeratik eta garraio-erroreetatik bereizita. OperationCanceledException bat emandako tokenetik edo beste denbora-muga konfiguratu batetik etor daiteke; aztertu dagokion ezeztatze-iturria, huts egite bakoitza proxy hilda gisa salatu beharrean.
Berrerabili proxy bide horren jabe den bezeroa. Saiakera bat ezeztatzeak ez du zertan esan nahi ondorengo eskaera bakoitzerako konexio-pool osoa berreraiki behar denik.
Adibideak erantzun-gorputz finitu bat bufferatzen du. Streaming bidezko deskargak tokena bere fluxu-kopia begiztatik pasatu eta erantzuna irteera-bide guztietan askatu beharko luke.
Ezeztapenak eragiketa-politika adierazten du, ez ordu-erlojuaren promesa zehatza plataformaren azpiko ekintza bakoitzerako. Saihestu Task.IsCompleted-en gaineko amaigabeko inkesta-begizta batekin ordezkatzea.