dev*_*per 6 .net c# dotnet-httpclient .net-core
我正在使用以下代码从使用.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);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我需要将项目转换为.Net Framework 4.6.1,并且.Net Framework 4.6.1中没有DefaultProxyCredentials属性。
.NET Framework 4.6.1(不使用配置文件)中的DefaultProxyCredentials等效项是什么?
更新:我尝试将代码更改为以下内容:
using (var handler = new HttpClientHandler() { Proxy = WebRequest.DefaultWebProxy})
{
}
Run Code Online (Sandbox Code Playgroud)
它可以工作,但会随机引发407-“需要代理身份验证”错误。
为什么你的目标是 4.6 而不是 4.7.2?这很重要,可能会导致 NuGet 依赖地狱。
看起来您正在使用 4.6 中包含的(非常)旧的 HttpClient 类,而不是System.Net.Http包。旧的实现甚至不使用新的套接字处理程序。该HttpClientHandler.DefaultProxyCredentials在.NET 4.7.1添加属性。
虽然 NuGet 认为 .NET Framework 4.6.1 支持 .NET Standard 1.5 到 2.0,但在使用为 .NET Framework 4.6.1 项目中的这些版本构建的 .NET Standard 库时存在一些问题。对于需要使用此类库的 .NET Framework 项目,我们建议您将项目升级到 .NET Framework 4.7.2 或更高版本。
到过那里。有生产崩溃报告来证明这一点。以及删除所有以前的垫片以摆脱版本冲突的高级 1 天升级体验。Several issues的确
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
Run Code Online (Sandbox Code Playgroud)