[英]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
从改变WinHttpHandler
到SocketsHttpHandler
。
要解决此问题,您可以尝试将进程配置为使用较旧的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.