Para un WebProxy propio, coloca la cuenta del proxy en ese objeto. Otras propiedades de credenciales .NET se dirigen a distintos destinatarios:

PropiedadDestinatario
WebProxy.CredentialsEl proxy representado por ese objeto.
HttpClientHandler.CredentialsEl servidor de destino.
DefaultProxyCredentialsEl proxy predeterminado del sistema cuando Proxy es null y UseProxy es true.

Este ejemplo .NET 10 proporciona un proxy explícito y su propia cuenta:

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

string password = Environment.GetEnvironmentVariable("PROXY_PASSWORD")
    ?? throw new InvalidOperationException("Set PROXY_PASSWORD");

var proxy = new WebProxy("http://203.0.113.10:8080")
{
    Credentials = new NetworkCredential("proxy-user", password)
};

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

Sustituye el punto de documentación y usa una cuenta facilitada por el operador. Una entrada de lista sin autenticación no necesita un inicio de sesión inventado. Como Proxy del controlador se asigna expresamente, DefaultProxyCredentials no sustituye WebProxy.Credentials.

UseDefaultCredentials también tiene un alcance propio del objeto: la autenticación de servidor del controlador y la autenticación de proxy de WebProxy son distintas. Enviar la cuenta del usuario del proceso no es una respuesta genérica a 407.

Si persiste el desafío de autenticación, revisa el esquema real, el punto elegido y la instancia de cliente/controlador. La autenticación proxy puede preceder al TLS del destino, por lo que una cabecera Authorization del sitio no puede responderle. La autenticación admitida sigue dependiendo del controlador, la plataforma, el servicio y la política de despliegue; no hace falta cambiar el proxy global de Windows.

Artículos relacionados