A proxy URL UserInfo része nem WebProxy.Credentials
Nyissa ki és dekódolja a felhasználói adatokat egy HTTP proxy URI-ból a NetworkCredential létrehozása előtt.
A WebProxy URI-konstruktora egy végpontot választ; nem tölti fel a Credentials-t az URI felhasználói adataival. Egy alkalmazás által ellenőrzött HTTP proxy URL esetén:
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);
}
A proxyUrl a megadott proxy URL, nem a webhely URL-je. Az Uri elemzi az authority részt, a UriBuilder pedig eltávolítja a felhasználói adatokat a WebProxy-ban tárolt végpontból.
Az első szó szerinti kettőspontnál ossza fel, mielőtt dekódolja az összetevőket. Így megmarad a felhasználónévben kódolt kettőspont, és a további jelszó-kettőspontok a jelszóban maradnak. Minden összetevőt egyszer dekódoljon; ne Base64-kódolja a jelszót a URL escaping helyett.
Végül rendelje a proxy-t a kívánt HTTP-kezelőhöz, mielőtt az elkezdi a kéréseket. Az objektum önmagában történő létrehozása nem változtatja meg egy másik kliens útválasztási szabályzatát.