Kasutage .NET HttpCliendi päiste ja keha jaoks üht CancellationTokeni
Edastage päringu CancellationToken nii HttpCliendi vastuse seadistamise kui ka keha lugemise ajal, selle asemel et mõõta ainult kutsuja ootamist.
Stoppkell võib ootamise lõpetada, samal ajal kui HTTP-päring jätkub. Andke tühistamine toimingule endale, kui puhverserveri katse jaoks on ette nähtud eelarve.
Kaasaegse .NET-rakenduse jaoks, millel on olemas puhverserveri jaoks seadistatud 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 eelarve algab enne seadistamist ja jääb keha lugemise ajal aktiivseks. ResponseHeadersRead tagastab juhtimise pärast päiseid, seega HttpCliendi enda lõpetamise ajalõpp ei määra iseenesest hilisemat keha lugemise eelarvet.
Hoidke tühistamine HTTP olekust ja transpordivigadest eraldi. OperationCanceledException võib tulla antud tokenist või mõnest muust seadistatud ajalõpust; kontrollige asjakohast tühistamisallikat, selle asemel et teatada iga ebaõnnestumist surnud puhverserverina.
Kasutage uuesti klienti, millele see puhverserveri marsruut kuulub. Katse tühistamine ei pea tähendama kogu ühenduste komplekti ülesehitamist iga järgneva päringu jaoks.
Näide puhverdab lõpliku vastuse keha. Voogesituse allalaadimine peaks tokeni läbi oma voo kopeerimise tsükli edastama ja vastuse igal väljumisteel vabastama.
Tühistamine väljendab toimingupoliitikat, mitte täpset reaalaja lubadust iga platvormi alustoimingu jaoks. Vältige selle asendamist lõputu küsitlustsükliga üle Task.IsCompleted.