Proxy üzerinden giden .NET HttpClient isteğini son tarih belirteciyle iptal edin
Proxy son tarihi dolduğunda yalnızca çağıranın beklemesini sonlandırmak yerine ağ işleminin kendisini iptal edin.
Son tarihi, ağ işini iptal edebilen işleme geçirin. Proxy üzerinden yapılandırılmış mevcut bir .NET HttpClient için:
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);Uygulama client ve uri sağlar. Bu aşırı yükleme iptal belirtecini alır; görevinin beklenmesi etrafındaki bir zaman aşımı yalnızca o çağıranın beklemesini sınırlar. Bir tamamlanma bayrağının yoklanması da aynı sorunu taşır: çağıran ayrılabilirken yuvalar ve çalışanlar meşgul kalır.
İptal, istemcinin uygulamasını ve temizleme yolunu izler. Her alt düzey eylemin tam bir yönergeyle duracağını vaat etmez. O yolun tamamlanmasına izin verin ve işlemin sahip olduğu kaynakları serbest bırakın. Tasarıma ayrı olarak denetlenen gövde okumasını dahil edin; modern bir .NET ResponseHeadersRead işlemi için, aynı belirteci gövde okuması boyunca geçirin. Diğer istemciler kendi iptal, durdurma ve temizleme arayüzlerini sunar.
Yeniden deneme, önceki deneme için bir sonuç gerektirir. Tanımlayıcısını ve seçilen proxy'yi koruyun, gerektiğinde iptal isteyin ve yedekleri sonsuz başlatırken görevi kaybetmekten kaçının. Aksi halde yavaş bir uç nokta işi uygulamanın serbest bıraktığından daha hızlı biriktirebilir.
Uzak sonuç ayrı bir işlem gerektirir. İptal gerçekleştiğinde hedef bir gönderimi çoktan almış olabilir. Uygulamanın kurtarma veya idempotency politikasını kullanın; yerel işi durdurmak uzak bir eylemi geri almaz.