Her proxy hesabı için ayrı bir .NET işleyicisi tutun
İsteklere hizmet eden bir taşıma üzerinde WebProxy.Credentials değiştirmek yerine eşzamanlı hesaplar için ayrı işleyiciler oluşturun.
Bir taşıma, havuz yöneticisi oluşturulurken seçilen proxy kimlik bilgisi sağlayıcısı nesnesini tutabilir. Sonradan WebProxy.Credentials değiştirmek güvenilir bir hesap değiştirme işlemi değildir.
İstemciyi kullanmadan önce rotayı ve hesabı birlikte oluşturun:
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);Uç nokta ve kimlik bilgileri uygulama yapılandırmasından gelir. İkinci bir kimlik için başka bir işleyici oluşturun; ilk işleyiciyi paylaşan başka bir HttpClient onun ilkesini de paylaşır.
Özel bir ICredentials sağlayıcısı sonraki meydan okumalara yanıt verebilir, ancak kurulmuş bir tüneli başka bir hesap olarak yeniden etiketleyemez. Asenkron çağrıların etrafında tek bir genel kullanıcı adı/parola atamak, meydan okuma zamanlamasını ve hesap sahipliğini çatışmada bırakır.
Yeniden kullanım gerektiğinde sınırlı sayıda istemci tutun. Eski işi taşıması atılmadan önce boşaltın. İstek başına yeni bir işleyici bağlantı havuzlarını boşa harcar; her tarihsel hesabı sonsuza dek tutmak onları sınırsız büyütür.