Um transporte pode reter o objeto fornecedor de credenciais de proxy escolhido quando o seu gestor de pool foi criado. Substituir WebProxy.Credentials depois disso não é uma operação fiável de troca de conta.

Crie a rota e a conta em conjunto antes de usar o cliente:

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

O endpoint e as credenciais vêm da configuração da aplicação. Crie outro manipulador para uma segunda identidade; outro HttpClient que partilhe o primeiro manipulador também partilha a sua política.

Um fornecedor ICredentials personalizado pode responder a desafios posteriores, mas não pode reetiquetar um túnel estabelecido como outra conta. Atribuir um único nome de utilizador/palavra-passe global em torno de chamadas assíncronas deixa o momento do desafio e a propriedade da conta em conflito.

Mantenha um conjunto limitado de clientes quando for necessário reutilizar. Esvazie o trabalho antigo antes de descartar o seu transporte. Um novo manipulador por pedido desperdiça pools de ligações; manter todas as contas históricas para sempre fá-las crescer sem limite.

Artigos relacionados