A .NET NO_PROXY szabályainak ellenőrzése a HttpClient.DefaultProxy.IsBypassed metódussal
Sorolja fel a csupasz tartományt és a kezdő ponttal írt alakot is, ha a HttpClientnek mindkettőnél meg kell kerülnie a proxyt, majd vizsgálja meg az IsBypassed értékét.
A HttpClient dokumentált környezeti proxyházirendje szerint az example.internal és a .example.internal eltérően illeszkedik. A csupasz név a szülő gazdagépet választja ki; a kezdő ponttal írt alak annak aldóménjeit.
Ha mindkettőnek közvetlenül kell mennie, vegye fel mindkettőt az indítási környezetbe:
export no_proxy='example.internal,.example.internal'
Vonja össze ezeket a szándékolt meglévő kivétellistával. Azokon a rendszereken, ahol a változónevek megkülönböztetik a kis- és nagybetűket, a .NET előbb a kisbetűs proxy környezeti neveket ellenőrzi, majd a nagybetűseket, így egy elavult no_proxy megelőzheti a NO_PROXY-t.
Az alkalmazáson belül az alapértelmezett választó a cél HTTP-kérés elküldése nélkül is megvizsgálható:
foreach (var host in new[] {
"example.internal", "api.example.internal", "other.internal"
})
{
var uri = new Uri("https://" + host + "/");
Console.WriteLine($"{host}: bypass={HttpClient.DefaultProxy.IsBypassed(uri)}");
}
A részlet a System és a System.Net.Http névteret használja. Ha az alkalmazás kifejezetten másik IWebProxy-t adott meg, akkor inkább a tényleges kezelőproxy vizsgálja. Az alapértelmezett proxy inicializálása előtt állítsa be a kívánt környezetet.
Ezek a .NET dokumentált szabályai. Az ugyanazzal a karakterlánccal kapott curl-eredmény nem bizonyítja, hogy egy másik kliens ugyanazt az útvonalat választotta, és a kivételdöntéshez továbbra is közvetlen hálózati elérés kell.