首页 > 解决方案 > .NET Core 3.1 中的默认代理

问题描述

对于需要脱离公司代理的代码,我需要 .NET Core 3.1 方面的帮助。通过将以下内容放入 app.config 中,该代码可在 .NET 4.7.2 中运行。这一点,我在这个网站上了解到(谢谢!),允许一个人通过公司代理服务器。

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

以下代码片段适用于 .NET 4.7.2,并且可以通过代理。代理存储为名为 ALL_PROXY 的环境变量,其值为 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:'服务请求失败。状态:407 (ADAuth-AuthenticationFailed) 此异常发生在 KeyVaultSecret 行上。

我已经研究了这个问题@

并尝试添加代码,例如

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

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

有没有人知道如何使用 Azure 服务通过 NET Core 中的工作代理?

标签: .net-coreproxymicrosoft-cognitive

解决方案


我有一个类似的问题,这解决了它:

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

推荐阅读