Дръжте отделен .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 може да отговаря на по-късни предизвикателства, но не може да преетикетира установен тунел като друг акаунт. Задаването на едно глобално потребителско име/парола около асинхронни извиквания оставя в конфликт времето на предизвикателството и собствеността на акаунта.
Дръжте ограничен набор от клиенти, когато е нужно повторно използване. Източете старата работа, преди да освободите транспорта ѝ. Нов манипулатор за всяка заявка прахосва пулове от връзки; запазването на всеки исторически акаунт завинаги ги расте без граница.