Notaðu eitt CancellationToken fyrir .NET HttpClient-hausa og -meginmál
Berðu CancellationToken beiðninnar í gegnum bæði uppsetningu HttpClient-svars og lestur meginmáls, í stað þess að tímasetja aðeins bið kallandans.
Stoppklukka getur hætt að bíða á meðan HTTP-beiðnin heldur áfram. Veittu aflýsingu á aðgerðina sjálfa þegar tilraun í gegnum proxy hefur fyrirhugað fjárhagsáætlun.
Fyrir nútíma .NET-forrit með núverandi proxy-stilltan 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);
Sama áætlun hefst fyrir uppsetninguna og helst virk á meðan meginmálið er lesið. ResponseHeadersRead skilar stjórninni eftir hausana, þannig að eigin lokunartími HttpClient skilgreinir ekki eitt og sér síðari áætlun fyrir lestur meginmáls.
Haltu aflýsingu aðskilinni frá HTTP-stöðu og flutningsvillum. OperationCanceledException getur komið frá veittu tókeninu eða frá öðrum stilltum tíma; skoðaðu viðeigandi aflýsingargjafa í stað þess að tilkynna hvert mistak sem dauðan proxy.
Notaðu aftur biðlarann sem á þessa proxy-leið. Að aflýsa tilraun þarf ekki að þýða endurbyggingu á öllum tengingarsafni fyrir hverja síðari beiðni.
Dæmið biðlar takmarkað svar-meginmál. Straumstreymisniðurhal ætti að senda tókenið í gegnum straumafritunarlykkjuna og losa svarið á hverri útleið.
Aflýsing lýsir aðgerðarstefnu, ekki nákvæmri loforði um rauntíma fyrir hverja undirliggjandi vettvangs-aðgerð. Forðastu að skipta henni út fyrir endalausa könnunarlykkju á Task.IsCompleted.