Które dane uwierzytelniające .NET należą do proxy?
Odróżnij WebProxy.Credentials, dane serwera docelowego i DefaultProxyCredentials przy uwierzytelnianiu proxy HTTP.
Dla własnego WebProxy ustaw konto proxy na tym obiekcie. Inne właściwości danych uwierzytelniających .NET mają różnych odbiorców:
| Właściwość | Odbiorca |
|---|---|
WebProxy.Credentials | Proxy reprezentowane przez ten obiekt. |
HttpClientHandler.Credentials | Serwer docelowy. |
DefaultProxyCredentials | Domyślne proxy systemowe, gdy Proxy jest null, a UseProxy jest true. |
Ten przykład .NET 10 podaje jawnie ustawione proxy i jego własne konto:
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);
Zastąp dokumentacyjny punkt końcowy i użyj konta dostarczonego przez operatora. Wpis listy bez uwierzytelnienia nie potrzebuje wymyślonego loginu. Ponieważ Proxy handlera jest jawnie przypisane, DefaultProxyCredentials nie zastępuje WebProxy.Credentials.
UseDefaultCredentials także ma zakres zależny od obiektu: uwierzytelnianie serwera w handlerze i uwierzytelnianie proxy w WebProxy są różne. Wysyłanie konta użytkownika procesu nie jest ogólną odpowiedzią na 407.
Jeśli wyzwanie uwierzytelnienia trwa, sprawdź rzeczywisty schemat, wybrany punkt i instancję klienta/handlera. Uwierzytelnienie proxy może poprzedzać TLS celu, więc nagłówek Authorization strony nie może na nie odpowiedzieć. Obsługiwane metody nadal zależą od handlera, platformy, usługi i polityki wdrożenia; konfiguracja nie wymaga globalnej zmiany proxy Windows.