繁体   English   中英

C#发布请求中断

[英]C# Post requests got broken

我有一个程序,可以发出Post请求。 该项目运行良好,但是使用旧版本的.NETCORE (1.1),我已将所有内容(包括框架)升级到2.1 从未更改过代码,因此没有错误发生,并且看起来可以更改。

现在,我的发帖请求失败了(我将仅附加一个,但我有大约4个发帖请求,每个人都出于相同的原因而失败)

编辑:我也测试了我的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

错误消息是:

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

我已经尝试过搜索该错误,但是对我来说似乎并不是每篇文章都涉及。.他们在谈论权限防火墙和端口,但是为什么它在一个项目中起作用而在另一个项目中不起作用?

如果我尝试通过Postman / 1.1版本的项目备份,那么它将起作用。

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

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

该误差,它是由改变铁芯1.1和2.1芯那之间引起HttpClientHandler从改变WinHttpHandlerSocketsHttpHandler

要解决此问题,您可以尝试将进程配置为使用较旧的HttpClientHandler

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

参考: 网络性能

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM