En transport kan behålla proxy-autentiseringsleverantörens objekt som valdes när dess poolhanterare skapades. Att ersätta WebProxy.Credentials efteråt är inte ett tillförlitligt kontobyte.

Skapa rutten och kontot tillsammans innan klienten används:

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);

Slutpunkten och autentiseringsuppgifterna kommer från programkonfigurationen. Bygg en annan hanterare för en andra identitet; en annan HttpClient som delar den första hanteraren delar också dess policy.

En anpassad ICredentials-leverantör kan svara på senare utmaningar, men den kan inte ometicera en etablerad tunnel som ett annat konto. Att tilldela ett enda globalt användarnamn/lösenord kring asynkrona anrop lämnar utmaningens timing och kontots ägande i konflikt.

Behåll en begränsad uppsättning klienter när återanvändning behövs. Töm gammalt arbete innan transporten kasseras. En ny hanterare per begäran slösar med anslutningspooler; att behålla varje historiskt konto för alltid får dem att växa utan gräns.

Relaterade artiklar