ப்ராக்ஸி URL-இன் UserInfo என்பது WebProxy.Credentials அல்ல
NetworkCredential உருவாக்கும் முன் HTTP ப்ராக்ஸி URI-இலிருந்து பயனர் தகவலைப் பிரித்தெடுத்து டிகோட் செய்யுங்கள்.
WebProxy-இன் URI உருவாக்கி ஒரு முனைப்புள்ளியை மட்டும் தேர்ந்தெடுக்கும்; அந்த URI-இன் பயனர் தகவலிலிருந்து Credentials-ஐ நிரப்பாது. பயன்பாடு சரிபார்த்த 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 escaping செய்யுங்கள்.
இறுதியாக, handler கோரிக்கைகளைத் தொடங்கும் முன் proxy-ஐ நோக்கமிட்ட HTTP handler-க்கு ஒதுக்குங்கள். பொருளை மட்டும் உருவாக்குவது மற்றொரு கிளையண்டின் ரூட்டிங் கொள்கையை மாற்றாது.