首页 > 解决方案 > HttpClient.GetAsync 在运行一段时间后失败,TaskCanceledException“任务已取消”

问题描述

我正在使用 GetAsync 方法从服务器检索响应。以下代码在前两次迭代中运行良好,然后出现错误消息“任务已取消”。我在网上搜索但没有找到任何解决方法。由于死锁,有人建议使用 async/await,但我认为这不是问题所在,而且它也不起作用。

任何想法是什么导致了异常以及如何防止它?

编辑:我已经完成了这个问题,并尝试使用前面提到的 async/await 并将默认超时更改为 5 分钟而不是 100 秒。他们都没有工作。我的猜测是来自 Netstat 日志的其他内容,我看到端口处于 TIME_WAITING 状态。

HttpClient - 任务被取消?

注意:我使用的是 System.Net.Http 4.3.4 版本和 .NET 4.6.1。

using System;
using System.Net.Http;

namespace Main
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = new HttpClient();
            string url = "https://www.google.com";
            for (int i = 0; i < 10; i++)
            {
                var response = client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead).GetAwaiter().GetResult();
                Console.WriteLine(response.StatusCode);
            }

            Console.ReadKey();
        }


    } 
}

标签: c#httpclientdotnet-httpclient.net-4.6.1getasync

解决方案


推荐阅读