Які облікові дані .NET належать проксі?
Розрізняйте WebProxy.Credentials, облікові дані сервера призначення та DefaultProxyCredentials під час автентифікації HTTP-проксі.
Для власного WebProxy задайте обліковий запис проксі на цьому об’єкті. Інші властивості облікових даних .NET мають різних одержувачів:
| Властивість | Одержувач |
|---|---|
WebProxy.Credentials | Проксі, представлений цим об’єктом. |
HttpClientHandler.Credentials | Сервер призначення. |
DefaultProxyCredentials | Системний типовий проксі, коли Proxy дорівнює null, а UseProxy — true. |
Цей приклад .NET 10 задає явний проксі та його власний обліковий запис:
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);
Замініть документаційну точку та використовуйте обліковий запис від оператора. Запис списку без автентифікації не потребує вигаданої авторизації. Оскільки Proxy обробника задано явно, DefaultProxyCredentials не замінює WebProxy.Credentials.
UseDefaultCredentials також має залежну від об’єкта область дії: серверна автентифікація обробника та проксі-автентифікація WebProxy різні. Надсилання облікового запису користувача процесу не є універсальною відповіддю на 407.
Якщо вимога автентифікації залишається, перевірте фактичну схему, вибрану точку та екземпляр клієнта/обробника. Автентифікація проксі може передувати TLS призначення, тому заголовок Authorization сайту не може на неї відповісти. Підтримка залежить від обробника, платформи, сервісу й політики розгортання; глобально змінювати проксі Windows не потрібно.