Với WebProxy tùy chỉnh, đặt tài khoản proxy trên đối tượng đó. Các thuộc tính thông tin đăng nhập .NET khác phục vụ những bên nhận khác nhau:

Thuộc tínhBên nhận
WebProxy.CredentialsProxy được đối tượng đó đại diện.
HttpClientHandler.CredentialsMáy chủ đích.
DefaultProxyCredentialsProxy mặc định hệ thống khi Proxy là null và UseProxy là true.

Ví dụ .NET 10 này cung cấp proxy tường minh và tài khoản riêng của nó:

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

Thay điểm cuối trong tài liệu và dùng tài khoản do đơn vị vận hành cung cấp. Mục danh sách không xác thực không cần thông tin đăng nhập tự bịa. Vì Proxy của handler được gán tường minh, DefaultProxyCredentials không thay thế WebProxy.Credentials.

UseDefaultCredentials cũng có phạm vi tùy đối tượng: xác thực máy chủ của handler khác với xác thực proxy của WebProxy. Gửi tài khoản người dùng tiến trình không phải cách trả lời chung cho 407.

Nếu yêu cầu xác thực còn tiếp diễn, kiểm tra cơ chế thực tế, điểm cuối đã chọn và đối tượng client/handler. Xác thực proxy có thể xảy ra trước TLS của đích, nên header Authorization của trang không trả lời được. Khả năng hỗ trợ vẫn phụ thuộc handler, nền tảng, dịch vụ và chính sách triển khai; không cần đổi proxy Windows toàn cục.

Bài viết liên quan