Тримайте окремий обробник .NET для кожного проксі-облікового запису
Створюйте окремі обробники для одночасних облікових записів замість заміни WebProxy.Credentials на транспорті, який уже обслуговує запити.
Транспорт може зберігати об’єкт постачальника проксі-облікових даних, вибраний під час створення його менеджера пулу. Заміна WebProxy.Credentials після цього не є надійною операцією перемикання облікового запису.
Створіть маршрут і обліковий запис разом, перш ніж використовувати клієнт:
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);Кінцева точка й облікові дані беруться з конфігурації застосунку. Для другої особи створіть інший обробник; інший HttpClient, що використовує перший обробник, використовує і його політику.
Користувацький постачальник ICredentials може відповідати на пізніші виклики, але не може перепозначити встановлений тунель як інший обліковий запис. Призначення одного глобального імені користувача/пароля навколо асинхронних викликів залишає час виклику й належність облікового запису в конфлікті.
Коли потрібне повторне використання, тримайте обмежений набір клієнтів. Злийте стару роботу перед звільненням її транспорту. Новий обробник на кожен запит марнує пули з’єднань; зберігання всіх історичних облікових записів назавжди росте їх без межі.