C#发布请求中断

时间:2018-09-03 13:32:36

标签: c# web-services post asp.net-core

我有一个程序,可以发出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

错误消息是:

  

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

我尝试谷歌搜索此错误,但是每篇帖子似乎对我来说都不是问题。.他们在谈论权限防火墙和端口,但是为什么它在一个项目中起作用而在另一个项目中不起作用?< / p>

如果我尝试通过邮递员/我的1.1版本项目备份,则可以使用。

为什么会这样?什么坏了?我可能需要添加超时属性吗?

1 个答案:

答案 0 :(得分:1)

  

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

对于此错误,是由于核心1.1和核心2.1之间的更改导致HttpClientHandlerWinHttpHandler变为SocketsHttpHandler

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

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

参考:Networking Performance

错误跟踪:.NET Core 2.1 SocketsHttpHandler proxy authentication using Windows auth is broken #30166