var client = clients.GetOrAdd(
    "proxy-east",
    "https://example.com",
    builder => builder.ConfigureInnerHandler(handler =>
        handler.Proxy = new WebProxy("http://203.0.113.10:8080")));

Aqui clients é o IFlurlClientCache do Flurl 4. Escolha a rota antes da consulta e dê ao seu cliente reutilizável um nome estável. Para requisições públicas permitidas, a lista de proxies HTTP oferece candidatos para a URL WebProxy do handler interno. Reutilizar proxy-east com um novo valor de proxy não é uma reconfiguração por requisição do cliente já mantido ali.

Use a API de handler correspondente ao tipo escolhido pela aplicação; o Flurl documenta outro caminho de configuração para SocketsHttpHandler.

Mantenha a rota selecionada nos metadados da operação e chame pelo cliente correspondente. Uma escolha aleatória sempre que uma factory é consultada pode, caso contrário, dar a um mesmo trabalho lógico políticas inconsistentes.

Seja dono do cache para um escopo de aplicação e limite o seu crescimento. Uma lista temporária de proxies em mudança pode acumular clientes e recursos; use identificadores de rota seguros para nomes/logs em vez de senhas embutidas.

Isto usa a interface de cache nomeado do Flurl 4 em vez de copiar a antiga infraestrutura de factory personalizada ou alterar um handler em uso durante outra requisição.

Artigos relacionados