在旧式ASP.NET上,异步方法的继续排队到请求上下文(AspNetSynchronizationContext
)中。但是在ASP.NET Core上,没有这样的SynchronizationContext
(无上下文)。
那么,ASP.NET Core中异步继续在哪里排队?
在这种 contextless 条件下,HttpContext
信息存储在哪里,以便ThreadPool中的线程可以引用它?
答案 0 :(得分:1)
我强烈建议您阅读Stephen Cleary博客,甚至是his book。在this post中,他讨论了ASP.NET Core中的同步上下文。
我强调这一段:
使用无上下文的ASP.NET Core方法,当异步时 处理程序恢复执行,从线程池中获取一个线程,然后 执行延续。避免了上下文队列,并且存在 无需“输入”请求上下文。除此之外 异步/等待机制针对无上下文而高度优化 场景。对于异步请求,要做的工作很少。