NO_PROXY ignored by .NET Core 3.0 on Windows(Windows上的.NET Core 3.0忽略NO_PROXY)
问题描述
我们正在尝试让代理功能在Windows上的.NET Core 3.0(或3.1)应用程序中运行。我们发现HTTPS_PROXY和HTTP_PROXY变量可以被识别和处理,但默认代理似乎不支持NO_PROXY变量。以下是示例代码:
HttpClient client = new HttpClient();
IWebProxy myProxy = HttpClient.DefaultProxy;
Uri target = new Uri(args[0]);
Uri proxy = myProxy.GetProxy(target);
Console.WriteLine($"Target proxy for {target} is {proxy} {myProxy.IsBypassed(target)}");
如果我从PowerShell运行此命令:
if (-not $env:path.Contains('c:datasrc')) {
$env:path = "$env:Path;C:datasrcLocalDefaultProxyinDebug
etcoreapp3.0"
}
$env:HTTPS_PROXY = 'http://10.11.10.10'
$env:NO_PROXY = '*'
DefaultProxy https://www.contoso.com
我得到:
https://www.contoso.com/的目标代理http://10.11.10.10/为假
我希望得到空白和True。
我应该更改什么才能使用no_Proxy将域从默认代理中排除?
推荐答案
我提取了System.Net.Http.HttpEnvironmental mentProxyin .NET Core 3.1(和in latest main development branch)的代码,并主要通过IsMatchInBypassList方法通读了它。NO_PROXY中不支持像星号(*
)这样的通配符,因此这根本不起作用。此外,对GetProxy的调用完全忽略no_proxy值。
.
)作为前缀,这是标准做法,但并没有特别详细的说明。我可以使用此信息更改我对文档的解释并获得更好的结果。
所以,如果我按如下方式修改PowerShell代码:
$env:HTTPS_PROXY = 'http://10.11.10.10'
$env:NO_PROXY = '.contoso.com'
DefaultProxy https://www.contoso.com
然后我得到:
https://www.contoso.com/的目标代理为http://10.11.10.10/True
假定DefaultProxy逻辑将使用值为True的IsBypassed结果停止no_Proxy列表上的代理。
这篇关于Windows上的.NET Core 3.0忽略NO_PROXY的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Windows上的.NET Core 3.0忽略NO_PROXY
- 使用 rss + c# 2022-01-01
- Azure Active Directory 与 MVC,客户端和资源标识同一 2022-01-01
- 在 C# 中异步处理项目队列 2022-01-01
- 是否可以在 .Net 3.5 中进行通用控件? 2022-01-01
- Windows 喜欢在 LINUX 中使用 MONO 进行服务开发? 2022-01-01
- CanBeNull和ReSharper-将其用于异步任务? 2022-01-01
- 带问号的 nvarchar 列结果 2022-01-01
- C# 通过连接字符串检索正确的 DbConnection 对象 2022-01-01
- 为什么 C# 中的堆栈大小正好是 1 MB? 2022-01-01
- 在 LINQ to SQL 中使用 contains() 2022-01-01