异步中的 ThreadStatic ASP.NET Web API

ThreadStatic in asynchronous ASP.NET Web API

是否可以在单个请求中使用线程静态变量?当前代码使用线程静态变量进行日志记录,现在我们想使用异步控制器方法(使用异步和等待模式),这会导致问题,因为打开新线程时该变量为空。

await会造成线程跳转,那么线程静态变量自然会出问题

要解决此问题,您可以使用 AsyncLocal<T> (available in .NET 4.6), or (if you must) HttpContext.Current.Items。在这两个中,如果您的平台上可用,我肯定会推荐 AsyncLocal<T> 而不是 Items