La petición debe usar el HttpClient creado con tu controlador de proxy. Crear un objeto WebProxy independiente no cambia la ruta de otro 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());

Sustituye la dirección de documentación por un proxy HTTP real de tu servicio o de la lista de proxies HTTP. Esta sintaxis de nivel superior sirve para un proyecto de consola C# moderno; los proyectos antiguos pueden poner las instrucciones en un Main asíncrono.

Comprueba ambas propiedades del controlador: Proxy selecciona el endpoint y UseProxy=true habilita su uso. Si el endpoint funciona por separado pero no en la aplicación, confirma que ningún código desactive UseProxy y que la llamada use esta instancia. El controlador dedicado evita depender de la detección del proceso o del sistema operativo.

Cuando el operador del proxy proporciona una cuenta, asigna un NetworkCredential a la propiedad WebProxy.Credentials. La Authorization del sitio corresponde a otro salto, y una entrada IP:port pública no proporciona credenciales predeterminadas. Un punto de escucha http:// puede transportar HTTPS mediante túnel; mantén la verificación normal del destino.

Este programa corto libera los objetos al salir. Para llamadas de servicio repetidas, sigue las recomendaciones .NET sobre la vida del cliente y conserva el cliente/controlador para la carga, en vez de reconstruir los pools de conexiones en cada petición. Revisa el estado devuelto: una ruta de proxy funcional puede seguir transportando un rechazo del sitio.

Artículos relacionados