Giữ một trình xử lý .NET riêng cho mỗi tài khoản proxy
Tạo các trình xử lý riêng cho các tài khoản đồng thời thay vì thay thế WebProxy.Credentials trên một transport đang phục vụ yêu cầu.
Một transport có thể giữ đối tượng nhà cung cấp thông tin xác thực proxy được chọn khi trình quản lý pool của nó được tạo. Thay thế WebProxy.Credentials sau đó không phải là thao tác chuyển tài khoản đáng tin cậy.
Tạo tuyến và tài khoản cùng lúc trước khi dùng ứng dụng khách:
var proxy = new System.Net.WebProxy(proxyEndpoint)
{
Credentials = new System.Net.NetworkCredential(proxyUser, proxyPassword)
};
var handler = new System.Net.Http.HttpClientHandler
{
UseProxy = true,
Proxy = proxy
};
var client = new System.Net.Http.HttpClient(handler);Điểm cuối và thông tin xác thực đến từ cấu hình ứng dụng. Tạo một trình xử lý khác cho danh tính thứ hai; một HttpClient khác dùng chung trình xử lý đầu tiên cũng dùng chung chính sách của nó.
Nhà cung cấp ICredentials tùy chỉnh có thể trả lời các thử thách sau này, nhưng không thể dán nhãn lại một đường hầm đã thiết lập thành tài khoản khác. Gán một tên người dùng/mật khẩu toàn cục duy nhất quanh các lệnh gọi bất đồng bộ khiến thời điểm thử thách và quyền sở hữu tài khoản xung đột.
Giữ một tập ứng dụng khách có giới hạn khi cần tái sử dụng. Xả công việc cũ trước khi loại bỏ transport của nó. Một trình xử lý mới cho mỗi yêu cầu lãng phí các pool kết nối; giữ mọi tài khoản lịch sử mãi mãi khiến chúng tăng không giới hạn.