proxy URL හි UserInfo යනු WebProxy.Credentials නොවේ
NetworkCredential සෑදීමට පෙර HTTP proxy URI වෙතින් පරිශීලක තොරතුරු උපුටා ගෙන විකේතනය කරන්න.
WebProxy හි URI නිර්මාපකය අන්ත ලක්ෂ්යයක් තෝරනවා පමණි; එය එම URI හි පරිශීලක තොරතුරු වලින් Credentials පුරවන්නේ නැත. යෙදුම මගින් තහවුරු කළ HTTP proxy 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 යනු ලබා දී ඇති proxy URL වන අතර වෙබ් අඩවි URL නොවේ. Uri එහි authority විග්රහ කරන අතර, UriBuilder WebProxy හි ගබඩා කර ඇති අන්ත ලක්ෂ්යයෙන් පරිශීලක තොරතුරු ඉවත් කරයි.
අංග විකේතනය කිරීමට පෙර පළමු වචනාර්ථ කෝලනයේදී බෙදන්න. මෙය පරිශීලක නාමය තුළ එන්කෝඩ් කළ කෝලනය රැක ගන්නා අතර මුරපදයේ අතිරේක කෝලන් මුරපදය තුළම තබා ගනී. සෑම අංගයක්ම එක් වරක් විකේතනය කරන්න; මුරපදය Base64 වලින් එන්කෝඩ් නොකරන්න, ඒ වෙනුවට URL escaping භාවිත කරන්න.
අවසාන වශයෙන්, handler ඉල්ලීම් ආරම්භ කිරීමට පෙර proxy අපේක්ෂිත HTTP handler වෙත පවරන්න. වස්තුව පමණක් නිර්මාණය කිරීම තවත් සේවාලාභියෙකුගේ මාර්ගගත කිරීමේ ප්රතිපත්තිය වෙනස් නොකරයි.