Pertahankan handler .NET terpisah untuk setiap akun proxy
Bangun handler terpisah untuk akun bersamaan alih-alih mengganti WebProxy.Credentials pada transport yang sudah melayani permintaan.
Transport dapat menyimpan objek penyedia kredensial proxy yang dipilih saat manajer pool-nya dibuat. Mengganti WebProxy.Credentials setelahnya bukan operasi penggantian akun yang andal.
Buat rute dan akun bersama-sama sebelum menggunakan klien:
var proxy = new System.Net.WebProxy(proxyEndpoint)
{
Credentials = new System.Net.NetworkCredential(proxyUser, proxyPassword)
};
var handler = new System.Net.Http.HttpClientHandler
{
UseProxy = true,
Proxy = proxy
};
var client = new System.Net.Http.HttpClient(handler);Titik akhir dan kredensial berasal dari konfigurasi aplikasi. Bangun handler lain untuk identitas kedua; HttpClient lain yang berbagi handler pertama juga berbagi kebijakannya.
Penyedia ICredentials khusus dapat menjawab tantangan berikutnya, tetapi tidak dapat melabeli ulang terowongan yang sudah terbentuk sebagai akun lain. Menetapkan satu nama pengguna/kata sandi global di sekitar panggilan asinkron membuat waktu tantangan dan kepemilikan akun bertentangan.
Pertahankan kumpulan klien yang terbatas saat penggunaan ulang diperlukan. Kuras pekerjaan lama sebelum membuang transportnya. Satu handler baru per permintaan memboroskan kumpulan koneksi; menyimpan setiap akun historis selamanya membuatnya tumbuh tanpa batas.