我试图了解如何使用 IOwinRequest.CallCancelled CancellationToken IOwinRequest。我假设任何时候请求变得无效时都会标记令牌(对于以下情况):
- 释放 WebApp.Start 返回的对象。
- HttpClient.GetAsync 任务被取消或释放。
在所有这些情况下,似乎从未标记 CallCancelled 请求。为什么?
编辑:我在我的代码中发现了一个错误,我的第一点“处理 WebApp.Start 返回的对象”现在有效。尽管如此,已处理/取消的客户端请求仍然不会触发服务器请求令牌进行标记。
对于某些背景,我正在尝试实现长轮询,其中服务器暂停请求线程,直到一些数据到达返回客户端,或者如果请求被取消。为了实现这一点,如果取消标记被标记,我的挂起循环将失败。如果它没有被标记,请求线程将永远不会结束,除非有东西要返回。由于令牌从未被标记,因此我的服务器可能会收到无限数量的永无止境的请求。