Прокси арқылы өтетін .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 әрекеті үшін сол токенді денені оқу арқылы өткізіңіз. Басқа клиенттер өздерінің болдырмау, тоқтату және тазалау интерфейстерін ұсынады.
Қайта әрекет ету үшін алдыңғы әрекеттің нәтижесі қажет. Оның идентификаторы мен таңдалған проксиді сақтаңыз, қажет болғанда болдырмауды сұраңыз және алмастырғыштарды шексіз іске қоса отырып тапсырманы жоғалтудан аулақ болыңыз. Әйтпесе баяу соңғы нүкте қолданба босататынынан жылдам жұмыс жинай алады.
Қашықтағы нәтиже бөлек өңдеуді қажет етеді. Болдырмау орын алғанда мақсат жіберілімді қабылдап қойған болуы мүмкін. Қолданбаның қалпына келтіру немесе idempotency саясатын пайдаланыңыз; жергілікті жұмысты тоқтату қашықтағы әрекетті болдырмайды.