是否有可能在单个请求中使用线程静态变量?当前代码使用线程静态变量进行日志记录,现在我们想使用异步控制器方法(带有异步和等待模式),这会导致问题,因为当打开新线程时变量为空。
问问题
1640 次
1 回答
14
await
会导致线程跳转,所以线程静态变量自然会出问题。
要解决此问题,您可以使用AsyncLocal<T>
(在 .NET 4.6 中可用)或(如果必须)使用HttpContext.Current.Items
. 在这两个中,我肯定会推荐AsyncLocal<T>
over Items
,如果它在您的平台上可用。
于 2017-02-28T14:14:11.883 回答