我可以使用Web API依赖CallContext吗?

时间:2016-03-16 20:01:37

标签: c# asp.net .net asp.net-web-api

使用asp.net Web API时,可以通过整个请求来依赖CallContext吗?

我已阅读decade-old blog post,我不确定它是否仍然有效(如there所述)。

假设Thread-Agility启动,如果我在全局过滤器中设置数据,是否可以安全地假设它将在整个请求中出现?

1 个答案:

答案 0 :(得分:3)

如果ASP.Net切换线程,则会丢失CallContext。在异步模型中,asp.net任务调度程序将负责将异步调用连接回具有相同HttpContext 的请求线程,但不一定是相同的线程。

示例:一个请求启动,然后你会在返回之前异步等待一些缓慢的IO - 当你在等待那个缓慢的IO时,没有理由让你的请求线程无所事事,所以它可能会被使用另一个请求。

ASP.Net是Thread Agility(google it)中的一项重要练习,此处也有一个很好的讨论:CallContext vs ThreadStatic vs HttpContext