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

Ber*_*rlo 6 .net c# asp.net asp.net-web-api

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

我已经阅读了这篇已有十年历史的博文,我不确定它是否仍适用(如那里所述).

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

cae*_*say 3

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

示例:请求开始,然后您在返回之前异步等待一些缓慢的 IO - 当您等待缓慢的 IO 时,您的请求线程没有理由无所事事,因此它可能会被用于另一个请求。

ASP.Net 是一个很大的练习Thread Agility(google it),这里也有关于此的精彩讨论:CallContext vs ThreadStatic vs HttpContext