UserInfo de prokurila URL ne estas WebProxy.Credentials
Eltiru kaj malĉifru uzantajn informojn el HTTP-prokurila URI antaŭ ol krei la NetworkCredential.
La URI-konstruilo de WebProxy elektas finpunkton; ĝi ne plenigas Credentials el la uzantaj informoj de tiu URI. Por aplikaĵo-validigita HTTP-prokurila 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 estas la donita prokurila URL, ne la reteja URL. Uri analizas ĝian authority, dum UriBuilder forigas la uzantajn informojn el la finpunkto konservita en WebProxy.
Dividu ĉe la unua laŭlitera dupunkto antaŭ ol malĉifri la komponantojn. Tio konservas ĉifritan dupunkton en la uzantnomo kaj restigas pliajn pasvortajn dupunktojn en la pasvorto. Malĉifru ĉiun komponanton unufoje; ne Base64-kodigu la pasvorton anstataŭ URL-escaping.
Fine, atribuu proxy al la celata HTTP-traktilo antaŭ ol tiu traktilo komencas petojn. Krei la objekton sola ne ŝanĝas la enkursigan politikon de alia kliento.