.net-core - .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 行上。
我已经研究了这个问题@
[https://github.com/dotnet/corefx/pull/37238/commits/9ba8879ea104afac9dea9a78d3009b5bc700b7c3][1]
并尝试添加代码,例如
var handler = new HttpClientHandler();
handler.DefaultProxyCredentials = CredentialCache.DefaultCredentials;
var httpClient = new HttpClient(handler);
我查看了签入的单元测试,但它们似乎都是关于网络代理的。上面的链接提供了如何实现代理的详细信息。
有没有人知道如何使用 Azure 服务通过 NET Core 中的工作代理?
解决方案
我有一个类似的问题,这解决了它:
IWebProxy proxy = WebRequest.GetSystemWebProxy();
proxy.Credentials = CredentialCache.DefaultCredentials;
HttpClient.DefaultProxy = proxy;
推荐阅读
- r - 如何在 R Shiny 中将反应值设置为默认值?
- django - django:ManyToMany:更新和插入业务规则
- azure - ARM 模板,服务器名称已存在但实际上不存在
- java - 后台服务不停止 Android
- amazon-web-services - AWS Glue Crawler 更新现有目录表非常慢
- java - 我有一个构造函数,它应该以一个字符串为例,一个地址并用“|”分割
- azure-logic-apps - 在 Azure 的 API 管理服务中导入逻辑应用 HTTP 请求端点
- javascript - 如何防止 Angular 重命名自定义 toJSON 方法?
- python - python中的无符号字节数组
- python - Django OAuth 工具包 - AttributeError: get_full_path