Windows上的.NET Core 3.0忽略NO

编程入门 行业动态 更新时间:2024-10-21 05:54:23
本文介绍了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 = '10.11.10.10' $env:NO_PROXY = '*' DefaultProxy www.contoso

我得到:

www.contoso/的目标代理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值。

要实现通配符行为,no_proxy列表中的域需要使用点(.)作为前缀,这是标准做法,但并没有特别详细的说明。我可以使用此信息更改我对文档的解释并获得更好的结果。

所以,如果我按如下方式修改PowerShell代码:

$env:HTTPS_PROXY = '10.11.10.10' $env:NO_PROXY = '.contoso' DefaultProxy www.contoso

然后我得到:

www.contoso/的目标代理为10.11.10.10/True

假定DefaultProxy逻辑将使用值为True的IsBypassed结果停止no_Proxy列表上的代理。

更多推荐

Windows上的.NET Core 3.0忽略NO

本文发布于:2023-11-07 22:55:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1567665.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:NET   Windows   Core

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!