ಪ್ರಾಕ್ಸಿ 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 ಎಸ್ಕೇಪಿಂಗ್ ಮಾಡಿ.
ಕೊನೆಯದಾಗಿ, ಹ್ಯಾಂಡ್ಲರ್ ವಿನಂತಿಗಳನ್ನು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು proxy ಅನ್ನು ಉದ್ದೇಶಿತ HTTP ಹ್ಯಾಂಡ್ಲರ್ಗೆ ನಿಯೋಜಿಸಿ. ಕೇವಲ ಆಬ್ಜೆಕ್ಟ್ ರಚಿಸುವುದರಿಂದ ಇನ್ನೊಂದು ಕ್ಲೈಂಟ್ನ ರೂಟಿಂಗ್ ನೀತಿ ಬದಲಾಗುವುದಿಲ್ಲ.