Zrušení proxovaného požadavku .NET HttpClient pomocí tokenu termínu
Zrušte samotnou síťovou operaci, když vyprší termín proxy, místo abyste omezili jen čekání volajícího.
Předejte termín operaci, která může zrušit síťovou práci. Pro existující .NET HttpClient nakonfigurovaný přes proxy:
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);Aplikace dodává client a uri. Toto přetížení přebírá token zrušení; časový limit kolem čekání na jeho úlohu by omezil jen čekání tohoto volajícího. Dotazování na příznak dokončení má stejný problém: volající může odejít, zatímco sockety a pracovníci zůstávají obsazené.
Zrušení se řídí implementací klienta a cestou úklidu. Neslibuje, že se každá akce nižší úrovně zastaví na přesné instrukci. Nechte tuto cestu dokončit a uvolněte prostředky, které operace vlastní. Zahrňte do návrhu samostatně řízené čtení těla; u moderní operace .NET ResponseHeadersRead předejte stejný token i čtením těla. Jiní klienti poskytují vlastní rozhraní pro zrušení, přerušení a úklid.
Opakování potřebuje výsledek předchozího pokusu. Zachovejte jeho identifikátor a zvolenou proxy, požadujte zrušení, když je to nutné, a vyhněte se ztrátě úlohy při nekonečném spouštění náhrad. Jinak může pomalý koncový bod hromadit práci rychleji, než ji aplikace uvolňuje.
Vzdálený výsledek vyžaduje samostatné zpracování. Cíl mohl již odeslání přijmout, když dojde ke zrušení. Použijte politiku obnovy nebo idempotence aplikace; zastavení místní práce nezruší vzdálenou akci.