Отказивање .NET HttpClient захтева кроз прокси помоћу токена рока
Откажите саму мрежну операцију када рок проксија истекне, уместо да ограничите само чекање позиваоца.
Проследите рок операцији која може да откаже мрежни рад. За постојећи .NET HttpClient конфигурисан кроз прокси:
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);Апликација обезбеђује client и uri. Ово преоптерећење прима токен за отказивање; временско ограничење око чекања његовог задатка ограничило би само чекање тог позиваоца. Испитивање заставице завршетка има исти проблем: позивалац може да оде док су утичнице и радници још заузети.
Отказивање прати имплементацију клијента и путању чишћења. Оно не обећава да ће се свака радња нижег нивоа зауставити на тачној инструкцији. Дозволите тој путањи да се заврши и ослободите ресурсе које операција поседује. Укључите у дизајн одвојено контролисано читање тела; за модерну .NET ResponseHeadersRead операцију, проследите исти токен кроз читање тела. Други клијенти пружају сопствене интерфејсе за отказивање, прекид и чишћење.
Поновни покушај захтева исход за претходни покушај. Сачувајте његов идентификатор и изабрани прокси, затражите отказивање када је потребно и избегните губитак задатка док бесконачно покрећете замене. Иначе спор endpoint може да нагомила посао брже него што га апликација ослобађа.
Удаљени исход захтева одвојено руковање. Одредиште је можда већ примило слање када дође до отказивања. Користите политику опоравка или идемпотентности апликације; заустављање локалног рада не поништава удаљену радњу.