Batalkan Permintaan .NET HttpClient melalui Proxy dengan Token Tenggat
Batalkan operasi jaringan itu sendiri saat tenggat proxy berakhir, alih-alih hanya membatasi penantian pemanggil.
Teruskan tenggat ke operasi yang dapat membatalkan kerja jaringan. Untuk .NET HttpClient yang sudah ada dan dikonfigurasi melalui proxy:
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);Aplikasi menyediakan client dan uri. Overload ini menerima token pembatalan; batas waktu di sekitar penantian tugasnya hanya akan membatasi penantian pemanggil tersebut. Melakukan polling pada bendera penyelesaian memiliki masalah yang sama: pemanggil dapat pergi sementara soket dan pekerja tetap sibuk.
Pembatalan mengikuti implementasi klien dan jalur pembersihannya. Itu tidak menjanjikan setiap tindakan tingkat bawah berhenti pada instruksi yang tepat. Biarkan jalur itu selesai dan lepaskan sumber daya yang dimiliki operasi. Sertakan pembacaan isi yang dikendalikan secara terpisah dalam desain; untuk operasi .NET ResponseHeadersRead modern, teruskan token yang sama melalui pembacaan isi. Klien lain menyediakan antarmuka pembatalan, penghentian, dan pembersihannya sendiri.
Percobaan ulang memerlukan hasil untuk percobaan sebelumnya. Simpan pengenalnya dan proxy yang dipilih, minta pembatalan bila perlu, dan hindari kehilangan tugas saat memulai pengganti tanpa batas. Jika tidak, titik akhir yang lambat dapat menumpuk pekerjaan lebih cepat daripada yang dilepaskan aplikasi.
Hasil jarak jauh memerlukan penanganan terpisah. Tujuan mungkin sudah menerima pengiriman saat pembatalan terjadi. Gunakan kebijakan pemulihan atau idempotensi aplikasi; menghentikan kerja lokal tidak membatalkan tindakan jarak jauh.