C# 发布请求已中断



我有一个程序,它发出一个 Post 请求。这个项目运行良好,但是使用旧版本的.NETCORE(1.1(,我已经将包括框架在内的所有内容都升级到2.1。没有更改代码,没有发生错误,似乎更改还可以。

现在我的 Post 请求失败了(我只会附加一个,但我有大约 4 个 Post 请求,每个请求都因相同原因失败(

编辑:我也刚刚测试了我的 Get 请求,产生相同的错误..

这是我的代码:

using (var client = new HttpClient())
{
Field fld = new Field()
{
...
};
ForJSON bodyFormat = new ForJSON()
{
...
};
string output = JsonConvert.SerializeObject(bodyFormat);
StringContent sc = new StringContent(output, Encoding.UTF8, "application/json");
try
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                      Convert.ToBase64String(
                      Encoding.ASCII.GetBytes(
                                                                 string.Format("{0}:{1}", "XX", "YY"))));
response = await client.PostAsync("https:...", sc); // It fails here

错误消息是:

尝试失败,因为连接方在一段时间后未正确响应,或者建立的连接失败,因为连接的主机无法响应

我尝试在谷歌上搜索此错误,但每个帖子似乎都与我无关。他们谈论的是权限防火墙和端口,但为什么它可以在一个项目中工作,而在另一个项目中则不能?

如果我尝试通过邮递员/我使用 1.1 版本备份项目,那么它可以工作.

为什么会这样?什么坏了?是否需要添加超时属性?

尝试失败,因为连接方在一段时间后未正确响应,或者建立的连接失败,因为连接的主机无法响应

对于此错误,它是由核心 1.1和核心 2.1 之间的更改引起的,这些更改HttpClientHandlerWinHttpHandler更改为SocketsHttpHandler

对于解决方法,您可以尝试将进程配置为使用较旧的 HttpClientHandler

AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);
using (var client = new HttpClient())

参考:网络性能。

错误跟踪:.NET Core 2.1 套接字使用 Windows 身份验证的 httpHandler 代理身份验证已损坏 #30166

相关内容

  • 没有找到相关文章

最新更新