c# – HttpClient取消不通知服务器取消
发布时间:2020-12-15 22:48:13 所属栏目:百科 来源:网络整理
导读:我正在尝试为OWIN Web服务创建一个客户端,如果请求被取消,它会通知服务,因此该服务也可以取消当前正在进行的该请求的工作. 在服务器端,我有一个使用此方法的ApiController: [HttpGet][Route("Get")]public int Get(CancellationToken ct){ Console.WriteLin
我正在尝试为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中运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |