Trzymaj osobny program obsługi .NET dla każdego konta proxy
Twórz osobne programy obsługi dla równoczesnych kont zamiast zastępować WebProxy.Credentials na transporcie, który już obsługuje żądania.
Transport może zachować obiekt dostawcy poświadczeń proxy wybrany podczas tworzenia jego menedżera puli. Późniejsza zamiana WebProxy.Credentials nie jest niezawodną operacją przełączenia konta.
Utwórz trasę i konto razem, zanim użyjesz klienta:
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);Punkt końcowy i poświadczenia pochodzą z konfiguracji aplikacji. Utwórz inny program obsługi dla drugiej tożsamości; inny HttpClient, który dzieli pierwszy program obsługi, dzieli także jego zasady.
Niestandardowy dostawca ICredentials może odpowiadać na późniejsze wyzwania, ale nie może oznaczyć ustanowionego tunelu jako innego konta. Przypisanie jednej globalnej nazwy użytkownika/hasła wokół wywołań asynchronicznych pozostawia czas wyzwania i własność konta w konflikcie.
Gdy potrzebne jest ponowne użycie, trzymaj ograniczony zestaw klientów. Opróżnij starą pracę przed usunięciem jej transportu. Nowy program obsługi na żądanie marnuje pule połączeń; trzymanie wszystkich historycznych kont na zawsze pozwala im rosnąć bez ograniczeń.