Verificar as regras NO_PROXY do .NET com HttpClient.DefaultProxy.IsBypassed
Liste tanto o domínio puro quanto a forma com ponto inicial quando o HttpClient precisar ignorar o proxy para ambos, e depois inspecione IsBypassed.
Segundo a política de proxy de ambiente documentada do HttpClient, example.internal e .example.internal correspondem de formas diferentes. O nome puro seleciona o host pai; a forma com ponto inicial seleciona os seus subdomínios.
Se ambos devem ir diretamente, inclua os dois no ambiente de inicialização:
export no_proxy='example.internal,.example.internal'
Combine-os com a lista de exceções existente que você pretende usar. Em sistemas cujos nomes de variáveis diferenciam maiúsculas de minúsculas, o .NET verifica primeiro as variáveis de proxy em minúsculas e depois as em maiúsculas, então um no_proxy antigo pode ter precedência sobre NO_PROXY.
Dentro da aplicação, o seletor predefinido pode ser inspecionado sem enviar a requisição HTTP ao destino:
foreach (var host in new[] {
"example.internal", "api.example.internal", "other.internal"
})
{
var uri = new Uri("https://" + host + "/");
Console.WriteLine($"{host}: bypass={HttpClient.DefaultProxy.IsBypassed(uri)}");
}
O trecho usa System e System.Net.Http. Se a aplicação forneceu explicitamente outro IWebProxy, inspecione o proxy real do manipulador. Defina o ambiente desejado antes que o proxy padrão seja inicializado.
Estas são as regras documentadas do .NET. Um resultado de curl com a mesma string não prova que outro cliente escolheu a mesma rota, e uma decisão de exceção ainda exige acessibilidade de rede direta.