Ang UserInfo ng isang proxy URL ay hindi WebProxy.Credentials
Kunin at i-decode ang impormasyon ng user mula sa HTTP proxy URI bago gumawa ng NetworkCredential.
Pinipili lamang ng URI constructor ng WebProxy ang isang endpoint; hindi nito pinupuno ang Credentials mula sa impormasyon ng user ng URI na iyon. Para sa HTTP proxy URL na binibigyang-bisa ng application:
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);
}
Ang proxyUrl ay ang ibinigay na proxy URL, hindi ang URL ng website. Sinusuri ng Uri ang authority nito, habang inaalis ng UriBuilder ang impormasyon ng user mula sa endpoint na nakaimbak sa WebProxy.
Hatiin sa unang literal na tutuldok bago i-decode ang mga bahagi. Pinapanatili nito ang naka-encode na tutuldok sa loob ng username at pinananatili ang mga karagdagang tutuldok ng password sa password. I-decode ang bawat bahagi nang isang beses; huwag i-encode ang password sa Base64 bilang kapalit ng URL escaping.
Sa huli, italaga ang proxy sa nilalayong HTTP handler bago ito magsimulang magpadala ng mga kahilingan. Ang pagbuo lamang ng object ay hindi nagbabago ng patakaran sa routing ng ibang client.