Välityspalvelimen URL:n UserInfo ei ole WebProxy.Credentials
Poimi ja pura käyttäjätiedot HTTP-välityspalvelimen URI:sta ennen NetworkCredentialin luomista.
WebProxyn URI-konstruktori valitsee päätepisteen; se ei täytä Credentialsia kyseisen URI:n käyttäjätiedoista. Sovelluksen validoimalle HTTP-välityspalvelimen URL:lle:
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 on annettu välityspalvelimen URL, ei verkkosivuston URL. Uri jäsentää sen authority-osan, kun taas UriBuilder poistaa käyttäjätiedot WebProxyyn tallennetusta päätepisteestä.
Jaa ensimmäisen kirjaimellisen kaksoispisteen kohdalta ennen osien purkamista. Näin käyttäjänimeen koodattu kaksoispiste säilyy ja ylimääräiset salasanan kaksoispisteet pysyvät salasanassa. Pura kukin osa kerran; älä koodaa salasanaa Base64:lla URL-escapen korvaamiseksi.
Lopuksi kohdista proxy aiotulle HTTP-käsittelijälle ennen kuin käsittelijä aloittaa pyynnöt. Pelkkä olion luominen ei muuta toisen asiakkaan reitityskäytäntöä.