HttpClient.DefaultProxy.IsBypassed ਨਾਲ .NET ਦੇ NO_PROXY ਨਿਯਮ ਜਾਂਚੋ
ਜਦੋਂ HttpClient ਨੂੰ ਦੋਵਾਂ ਲਈ ਪ੍ਰੌਕਸੀ ਛੱਡਣੀ ਹੋਵੇ ਤਾਂ ਨੰਗਾ ਡੋਮੇਨ ਅਤੇ ਅੱਗੇ ਬਿੰਦੂ ਵਾਲਾ ਰੂਪ ਦੋਵੇਂ ਸੂਚੀਬੱਧ ਕਰੋ, ਫਿਰ IsBypassed ਵੇਖੋ।
HttpClient ਦੀ ਦਸਤਾਵੇਜ਼ੀ ਵਾਤਾਵਰਣ-ਪ੍ਰੌਕਸੀ ਨੀਤੀ ਅਨੁਸਾਰ example.internal ਅਤੇ .example.internal ਵੱਖਰੇ ਤਰੀਕੇ ਨਾਲ ਮਿਲਦੇ ਹਨ। ਨੰਗਾ ਨਾਮ ਮੂਲ ਹੋਸਟ ਚੁਣਦਾ ਹੈ; ਅੱਗੇ ਬਿੰਦੂ ਵਾਲਾ ਰੂਪ ਇਸ ਦੇ ਉਪ-ਡੋਮੇਨ ਚੁਣਦਾ ਹੈ।
ਜੇ ਦੋਵੇਂ ਸਿੱਧੇ ਜਾਣੇ ਚਾਹੀਦੇ ਹਨ, ਤਾਂ ਦੋਵੇਂ ਸ਼ੁਰੂਆਤੀ ਵਾਤਾਵਰਣ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ:
export no_proxy='example.internal,.example.internal'
ਇਹਨਾਂ ਨੂੰ ਇੱਛਤ ਮੌਜੂਦਾ ਬਾਈਪਾਸ ਸੂਚੀ ਵਿੱਚ ਮਿਲਾਓ। ਜਿਨ੍ਹਾਂ ਸਿਸਟਮਾਂ ਵਿੱਚ ਵੇਰੀਏਬਲ ਨਾਮ ਵੱਡੇ-ਛੋਟੇ ਅੱਖਰਾਂ ਵਿੱਚ ਫ਼ਰਕ ਕਰਦੇ ਹਨ, ਉੱਥੇ .NET ਪਹਿਲਾਂ ਛੋਟੇ ਅੱਖਰਾਂ ਵਾਲੇ ਪ੍ਰੌਕਸੀ ਵਾਤਾਵਰਣ ਨਾਮ ਜਾਂਚਦਾ ਹੈ, ਫਿਰ ਵੱਡੇ ਅੱਖਰਾਂ ਵਾਲੇ, ਇਸ ਲਈ ਪੁਰਾਣਾ no_proxy NO_PROXY ਉੱਤੇ ਤਰਜੀਹ ਲੈ ਸਕਦਾ ਹੈ।
ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਅੰਦਰ, ਮੰਜ਼ਿਲ ਦੀ HTTP ਬੇਨਤੀ ਭੇਜੇ ਬਿਨਾਂ ਡਿਫ਼ਾਲਟ ਚੋਣਕਾਰ ਜਾਂਚਿਆ ਜਾ ਸਕਦਾ ਹੈ:
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)}");
}
ਇਹ ਟੁਕੜਾ System ਅਤੇ System.Net.Http ਵਰਤਦਾ ਹੈ। ਜੇ ਐਪਲੀਕੇਸ਼ਨ ਨੇ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਕੋਈ ਹੋਰ IWebProxy ਦਿੱਤਾ ਹੈ, ਤਾਂ ਇਸ ਦੀ ਥਾਂ ਅਸਲ ਹੈਂਡਲਰ ਪ੍ਰੌਕਸੀ ਵੇਖੋ। ਡਿਫ਼ਾਲਟ ਪ੍ਰੌਕਸੀ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਇੱਛਤ ਵਾਤਾਵਰਣ ਸੈੱਟ ਕਰੋ।
ਇਹ .NET ਦੇ ਦਸਤਾਵੇਜ਼ੀ ਨਿਯਮ ਹਨ। ਉਸੇ ਸਟ੍ਰਿੰਗ ਵਾਲਾ curl ਨਤੀਜਾ ਇਹ ਸਾਬਤ ਨਹੀਂ ਕਰਦਾ ਕਿ ਕਿਸੇ ਹੋਰ ਕਲਾਇਂਟ ਨੇ ਉਹੀ ਰਾਹ ਚੁਣਿਆ, ਅਤੇ ਬਾਈਪਾਸ ਫ਼ੈਸਲੇ ਲਈ ਹਾਲੇ ਵੀ ਸਿੱਧੀ ਨੈੱਟਵਰਕ ਪਹੁੰਚ ਲੋੜੀਂਦੀ ਹੈ।