Per un WebProxy personalizzato, imposta l’account del proxy su quell’oggetto. Altre proprietà di credenziali .NET servono destinatari diversi:

ProprietàDestinatario
WebProxy.CredentialsIl proxy rappresentato da quell’oggetto.
HttpClientHandler.CredentialsIl server di destinazione.
DefaultProxyCredentialsIl proxy predefinito di sistema quando Proxy è null e UseProxy è true.

Questo esempio .NET 10 fornisce un proxy esplicito e il suo account:

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

Sostituisci l’endpoint di documentazione e usa un account fornito dall’operatore. Una voce senza autenticazione non richiede un accesso inventato. Poiché Proxy dell’handler è assegnato esplicitamente, DefaultProxyCredentials non sostituisce WebProxy.Credentials.

Anche UseDefaultCredentials ha un ambito specifico dell’oggetto: l’autenticazione al server dell’handler e l’autenticazione al proxy di WebProxy sono diverse. Inviare l’account dell’utente del processo non è una risposta generica a 407.

Se la richiesta di autenticazione persiste, controlla lo schema effettivo, l’endpoint selezionato e l’istanza client/handler. L’autenticazione proxy può precedere il TLS verso la destinazione, quindi un header Authorization del sito non può rispondervi. L’autenticazione supportata dipende ancora da handler, piattaforma, servizio e criteri di distribuzione; non serve cambiare globalmente il proxy Windows.

Articoli correlati