A petición debe usar o HttpClient creado co teu controlador de proxy. Crear un obxecto WebProxy independente non cambia a ruta doutro cliente.

using System;
using System.Net;
using System.Net.Http;

var proxy = new WebProxy("http://203.0.113.10:8080")
{
    BypassProxyOnLocal = false
};

using var handler = new HttpClientHandler
{
    Proxy = proxy,
    UseProxy = true
};

using var client = new HttpClient(handler)
{
    Timeout = TimeSpan.FromSeconds(15)
};

using var response = await client.GetAsync("https://example.com/");
Console.WriteLine((int)response.StatusCode);
Console.WriteLine(await response.Content.ReadAsStringAsync());

Substitúe o enderezo de documentación por un proxy HTTP real do teu servizo ou da lista de proxies HTTP. Esta sintaxe de nivel superior serve para un proxecto de consola C# moderno; os proxectos antigos poden poñer as instrucións nun Main asíncrono.

Comproba as dúas propiedades do controlador: Proxy selecciona o extremo e UseProxy=true activa o seu uso. Se o extremo funciona por separado pero non na aplicación, confirma que ningún código desactive UseProxy e que a chamada use esta instancia. O controlador dedicado evita depender da detección do proceso ou do sistema operativo.

Cando o operador proporciona unha conta, asigna un NetworkCredential á propiedade WebProxy.Credentials. A Authorization do sitio corresponde a outro salto, e unha entrada IP:port pública non fornece credenciais predeterminadas. Un punto de escoita http:// pode transportar HTTPS por túnel; mantén a verificación normal do destino.

Este programa curto libera os obxectos ao saír. Para chamadas de servizo repetidas, segue as recomendacións .NET sobre a vida do cliente e conserva o cliente/controlador para a carga, en vez de reconstruír os pools de conexións en cada petición. Revisa o estado devolto: unha ruta proxy funcional aínda pode transportar un rexeitamento do sitio.

Artigos relacionados