c# - HttpClient.GetAsync 在运行一段时间后失败,TaskCanceledException“任务已取消”
问题描述
我正在使用 GetAsync 方法从服务器检索响应。以下代码在前两次迭代中运行良好,然后出现错误消息“任务已取消”。我在网上搜索但没有找到任何解决方法。由于死锁,有人建议使用 async/await,但我认为这不是问题所在,而且它也不起作用。
任何想法是什么导致了异常以及如何防止它?
编辑:我已经完成了这个问题,并尝试使用前面提到的 async/await 并将默认超时更改为 5 分钟而不是 100 秒。他们都没有工作。我的猜测是来自 Netstat 日志的其他内容,我看到端口处于 TIME_WAITING 状态。
注意:我使用的是 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();
}
}
}
解决方案
推荐阅读
- algorithm - 根据每小时工作需求定义轮班
- python-3.x - 替换已保存图形的输入(数据集迭代器的占位符)后,如何从训练好的模型中恢复权重?
- python - 为什么目录 ~/.local/lib 在我的 sys.path 中的 /usr/local/lib 后面?
- c++ - MSVC2013:如何避免使用错误的预构建脚本中止构建过程(错误 MSB3073: :VCEnd" 退出,代码 -1)
- python - 如果列表包含大小不相等的元组,如何迭代?
- immutable.js - 将 immutable.js 对象传递给 Ramda 函数不起作用 - 不调用管道函数
- python - 使用熊猫在csv中通过另一列中的条件更新一列中的值
- javascript - Webpack:将 svg 文件加入符号并为每个条目生成 css (sass) 样式表
- ios - 在 cellForRowAt 中手动触发 didSelectRowAtIndexPath 会导致实际 didSelectRowAtIndexPath 委托方法中的单元格为零
- git - 如何在 Visual Studio 中为所有子模块创建新分支