Starpniekservera URL UserInfo nav WebProxy.Credentials
Izgūstiet un atšifrējiet lietotāja informāciju no HTTP starpniekservera URI pirms NetworkCredential izveides.
WebProxy URI konstruktors izvēlas galapunktu; tas neaizpilda Credentials ar šī URI lietotāja informāciju. Programmas pārbaudītam HTTP starpniekservera 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 ir norādītais starpniekservera URL, nevis vietnes URL. Uri analizē tā authority, bet UriBuilder noņem lietotāja informāciju no WebProxy saglabātā galapunkta.
Sadaliet pie pirmās burtiskās kolkas pirms komponentu atšifrēšanas. Tas saglabā kodētu kollu lietotājvārdā un patur papildu paroles kollas parolē. Atšifrējiet katru komponentu vienreiz; nekodējiet paroli Base64 formātā URL escapinga vietā.
Visbeidzot, pirms šis apstrādātājs sāk pieprasījumus, piešķiriet proxy paredzētajam HTTP apstrādātājam. Tikai objekta izveide nemaina cita klienta maršrutēšanas politiku.