.NET Core 3.1 中的默认代理



我需要一些关于.NET Core 3.1的帮助,以处理需要脱离公司代理的代码。该代码在 .NET 4.7.2 中的工作原理是将以下内容放在 app.config 中。我在这个网站上了解到这一点(谢谢!(,允许人们通过公司代理服务器。

<system.net>
<defaultProxy useDefaultCredentials="true">
</defaultProxy>
</system.net>

以下代码片段适用于 .NET 4.7.2,并且可以通过代理。代理存储为名为 ALL_PROXY 的 env 变量,其值 http://我们的内部代理:端口(参见 [https://github.com/dotnet/corefx/pull/37238/commits/9ba8879ea104afac9dea9a78d3009b5bc700b7c3][1](。这是一项 Azure 认知服务,因此需要一个密钥保管库和一个认知服务。

var keyVaultName = Environment.GetEnvironmentVariable("KEY_VAULT_NAME");
var kvUri = string.Format("{0}{1}{2}", 
"https://", 
keyVaultName, 
".vault.azure.net");
var secretClient = new SecretClient(new Uri(kvUri), 
new DefaultAzureCredential());
KeyVaultSecret secret = secretClient.GetSecret("FacesSubscription");
var subscriptionKey = secret.Value;
var credentials = new ApiKeyServiceClientCredentials(subscriptionKey);
var textClient = new TextAnalyticsClient(credentials)
{
Endpoint = endpoint
};

在.Net核心上,我得到一个http 407异常。Azure.RequestFailedException: 'Service Request failed. 状态:407(ADAuth-身份验证失败(此异常发生在密钥保管库机密行上。

我已经研究了这个问题@

  • [https://github.com/dotnet/corefx/pull/37238/commits/9ba8879ea104afac9dea9a78d3009b5bc700b7c3][1]

  • https://github.com/dotnet/corefx/pull/37238

  • https://github.com/dotnet/corefx/pull/37333

  • https://github.com/dotnet/runtime/issues/29147

并尝试添加代码,例如

var handler = new HttpClientHandler();
handler.DefaultProxyCredentials = CredentialCache.DefaultCredentials;
var httpClient = new HttpClient(handler);

我查看了签入的单元测试,但它们似乎都与网络代理有关。上面的链接提供了有关如何实现代理的详细信息。

有没有人想通过 NET Core 中带有 Azure 服务的工作代理?

我遇到了类似的问题,这解决了它:

IWebProxy proxy = WebRequest.GetSystemWebProxy();
proxy.Credentials = CredentialCache.DefaultCredentials;
HttpClient.DefaultProxy = proxy;

最新更新