WebProxy'nin URI oluşturucusu yalnızca bir uç nokta seçer; Credentials alanını o URI'nin kullanıcı bilgileriyle doldurmaz. Uygulama tarafından doğrulanan bir HTTP proxy URL'si için:

var uri = new Uri(proxyUrl);
var endpoint = new UriBuilder(uri)
{
    UserName = "",
    Password = ""
};

var proxy = new System.Net.WebProxy(endpoint.Uri);

if (uri.UserInfo.Length > 0)
{
    var parts = uri.UserInfo.Split(new[] { ':' }, 2);
    var username = Uri.UnescapeDataString(parts[0]);
    var password = parts.Length == 2
        ? Uri.UnescapeDataString(parts[1])
        : "";

    proxy.Credentials =
        new System.Net.NetworkCredential(username, password);
}

proxyUrl, sağlanan proxy URL'sidir, web sitesinin URL'si değildir. Uri authority kısmını ayrıştırır, UriBuilder ise WebProxy'de saklanan uç noktadan kullanıcı bilgilerini kaldırır.

Bileşenleri çözmeden önce ilk gerçek iki nokta üst üstede bölün. Bu, kullanıcı adındaki kodlanmış iki noktayı korur ve paroladaki ek iki noktaları parolada bırakır. Her bileşeni bir kez çözün; parolayı Base64 ile kodlamayın, bunun yerine URL kaçışı kullanın.

Son olarak, proxy'yi o işleyici istekleri başlatmadan önce amaçlanan HTTP işleyicisine atayın. Yalnızca nesneyi oluşturmak başka bir istemcinin yönlendirme ilkesini değiştirmez.

İlgili makaleler