在ASP.NET Core中异步继续在哪里排队?

时间:2018-12-21 16:29:12

标签: asp.net asp.net-core async-await threadpool synchronizationcontext

在旧式ASP.NET上,异步方法的继续排队到请求上下文(AspNetSynchronizationContext)中。但是在ASP.NET Core上,没有这样的SynchronizationContext(无上下文)。

那么,ASP.NET Core中异步继续在哪里排队?

在这种 contextless 条件下,HttpContext信息存储在哪里,以便ThreadPool中的线程可以引用它?

1 个答案:

答案 0 :(得分:1)

我强烈建议您阅读Stephen Cleary博客,甚至是his book。在this post中,他讨论了ASP.NET Core中的同步上下文。

我强调这一段:

  

使用无上下文的ASP.NET Core方法,当异步时   处理程序恢复执行,从线程池中获取一个线程,然后   执行延续。避免了上下文队列,并且存在   无需“输入”请求上下文。除此之外   异步/等待机制针对无上下文而高度优化   场景。对于异步请求,要做的工作很少。