Păstrați un handler .NET separat pentru fiecare cont proxy
Creați handlere separate pentru conturile simultane în loc să înlocuiți WebProxy.Credentials pe un transport care deja servește cereri.
Un transport poate păstra obiectul furnizor de acreditări proxy ales la crearea managerului său de pool. Înlocuirea WebProxy.Credentials după aceea nu este o operațiune fiabilă de schimbare a contului.
Creați ruta și contul împreună înainte de a folosi clientul:
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);Punctul final și acreditările provin din configurația aplicației. Creați un alt handler pentru o a doua identitate; un alt HttpClient care partajează primul handler partajează și politica acestuia.
Un furnizor ICredentials personalizat poate răspunde la provocări ulterioare, dar nu poate reeticheta un tunel stabilit ca alt cont. Atribuirea unei singure combinații globale utilizator/parolă în jurul apelurilor asincrone lasă momentul provocării și proprietatea contului în conflict.
Păstrați un set limitat de clienți când este nevoie de reutilizare. Goliți munca veche înainte de a elimina transportul acesteia. Un handler nou pentru fiecare cerere irosește pool-urile de conexiuni; păstrarea tuturor conturilor istorice pentru totdeauna le crește fără limită.