gpt4 book ai didi

c# - HttpClientHandler 不包含 DefaultProxyCredentials 的定义

转载 作者:太空狗 更新时间:2023-10-29 21:42:35 31 4
gpt4 key购买 nike

我正在使用以下代码从使用 .Net Core 2.0 的 API 获取数据。

        using (var handler = new HttpClientHandler() { DefaultProxyCredentials = CredentialCache.DefaultCredentials })
{
handler.PreAuthenticate = true;
using (var client = new HttpClient(handler))
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
var response = await client.GetAsync(url);
}
}

但是,我需要将项目转换为 .Net Framework 4.6.1,而 .Net Framework 4.6.1 中没有 DefaultProxyCredentials 属性。

https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclienthandler.defaultproxycredentials

.Net framework 4.6.1(不使用配置文件)中的 DefaultProxyCredentials 等价物是什么?

更新:我尝试将代码更改为以下内容:

using (var handler = new HttpClientHandler() { Proxy = WebRequest.DefaultWebProxy})
{
}

它有效但随机抛出 407 - “需要代理身份验证”错误。

最佳答案

为什么您的目标是 4.6 而不是 4.7.2?这很重要,可能会导致 NuGet 依赖 hell 。


看起来您正在使用 4.6 中包含的(非常)旧的 HttpClient 类而不是 System.Net.Http包裹。旧的实现甚至不使用新的套接字处理程序。 HttpClientHandler.DefaultProxyCredentials属性是在 .NET 4.7.1 中添加的。

  • 最好的选择可能是针对最新的 .NET 版本,或者至少是 4.7.1,并使用与现在相同的代码。更好的是,以 4.7.2 为目标,以避免在下一个选项中解释的依赖垫片 hell 。
  • 您可以只添加包。它与 .NET Core 项目中使用的 .NET Standard 2.0 包相同。缺点是 4.6.1 不是真正兼容 .NET Standard 2.0 并且需要几个兼容性库。由于版本相互冲突,升级很容易导致依赖 hell 。 .NET 团队 admitted that trying to retrofit .NET Standard 2.0 compliance was a bad idea

While NuGet considers .NET Framework 4.6.1 as supporting .NET Standard 1.5 through 2.0, there are several issues with consuming .NET Standard libraries that were built for those versions from .NET Framework 4.6.1 projects. For .NET Framework projects that need to use such libraries, we recommend that you upgrade the project to target .NET Framework 4.7.2 or higher.

去过那里。有生产崩溃报告来证明这一点。以及 删除 所有以前的垫片以消除版本冲突的高级 1 天升级体验。 几个问题确实

  • 使用
  • 设置默认代理的 Credentials 属性
    WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;

关于c# - HttpClientHandler 不包含 DefaultProxyCredentials 的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57772068/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com