c# – HttpClient取消不通知服务器取消

我正在尝试为OWIN Web服务创建一个客户端,如果请求被取消,它会通知服务,因此该服务也可以取消当前正在进行的该请求的工作.

在服务器端,我有一个使用此方法的ApiController:

[HttpGet]
[Route("Get")]
public int Get(CancellationToken ct)
{
  Console.WriteLine("started!");

  while (!ct.IsCancellationRequested)
  {
    Thread.Sleep(500);
  }

  Console.WriteLine("canceled!");

  return 0;
}

如果我通过Edge访问API,它可以工作(我在中止加载时会收到“已取消!”消息,在其他地方导航,关闭选项卡或关闭浏览器),但是我尝试了其他所有方法(Chrome,Postman),HttpClient,HttpWebRequest),CancellationToken就不会被取消. Edge与其他所有应用程序有什么不同,以及如何使它与HttpClient一起使用?我尝试使用CancellationToken调用GetAsync()并取消它,我尝试了HttpClient的dispose()和CancelPendingRequests()方法,但没有一个触发服务器端取消.

解决方法

更新Nuget包后

Microsoft.Owin
Microsoft.Owin.Host.HttpListener
Microsoft.Owin.Hosting
Microsoft.Owin.SelfHost

到v3.1.0,取消工作不仅来自Edge,还来自Chrome和HttpClient.我再次将软件包降级到v2.0.0以排除其他原因并确认新版本解决了问题.不过,我仍然很想知道为什么它在升级之前就能在Edge中运行.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...