我需要一些关于.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;