Փրոքսի URL-ի UserInfo-ն WebProxy.Credentials չէ
Նախքան NetworkCredential-ը ստեղծելը՝ հանեք և վերծանեք օգտվողի տվյալները HTTP փրոքսի URI-ից։
WebProxy-ի URI կոնստրուկտորը ընտրում է վերջնակետ; այն Credentials-ը չի լրացնում այդ URI-ի օգտվողի տվյալներով։ Հավելվածով ստուգված HTTP փրոքսի 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-ը տրամադրված փրոքսի URL-ն է, ոչ թե կայքի URL-ը։ Uri-ն վերլուծում է authority-ն, իսկ UriBuilder-ը հեռացնում է օգտվողի տվյալները WebProxy-ում պահվող վերջնակետից։
Բաժանեք առաջին բառացի երկու կետի վրա՝ մինչ բաղադրիչները վերծանելը։ Դա պահպանում է օգտանվան մեջ կոդավորված երկու կետը և գաղտնաբառի լրացուցիչ երկու կետերը թողնում է գաղտնաբառում։ Վերծանեք յուրաքանչյուր բաղադրիչ մեկ անգամ; գաղտնաբառը Base64-ով մի կոդավորեք URL-ի էսքեյփինգի փոխարեն։
Վերջապես, նախքան այդ մշակիչը կսկսի հարցումները, proxy-ն նշանակեք նախատեսված HTTP մշակիչին։ Միայն օբյեկտը ստեղծելը չի փոխում մեկ այլ հաճախորդի երթուղավորման քաղաքականությունը։