Tarpinio serverio URL „UserInfo“ nėra WebProxy.Credentials
Išskirkite ir iškoduokite naudotojo informaciją iš HTTP tarpinio serverio URI prieš kurdami NetworkCredential.
WebProxy URI konstruktorius pasirenka tik galinį tašką; jis neužpildo Credentials šio URI naudotojo informacija. Programos patvirtintam HTTP tarpinio serverio URL:
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 yra pateiktas tarpinio serverio URL, o ne svetainės URL. Uri analizuoja jo authority, o UriBuilder pašalina naudotojo informaciją iš WebProxy saugomo galinio taško.
Padalykite ties pirmuoju tiesioginiu dvitaškiu prieš iškoduodami komponentus. Taip išsaugomas užkoduotas dvitaškis naudotojo varde ir papildomi slaptažodžio dvitaškiai lieka slaptažodyje. Kiekvieną komponentą iškoduokite vieną kartą; neužkoduokite slaptažodžio Base64 formatu vietoj URL escapingo.
Galiausiai priskirkite proxy numatytam HTTP apdorojimo įrenginiui, kol jis dar nepradėjo užklausų. Vien objekto sukūrimas nekeičia kito kliento maršrutizavimo politikos.