是否有可能在单个请求中使用线程静态变量?当前代码使用线程静态变量进行日志记录,现在我们想要使用异步控制器方法(具有异步和等待模式),这会导致问题,因为打开新线程时该变量为空。
await
会导致线程跳转,所以线程静态变量自然会出现问题。
要解决此问题,您可以使用AsyncLocal<T> https://msdn.microsoft.com/en-us/library/dn906268(v=vs.110).aspx(在 .NET 4.6 中可用),或者(如果必须)HttpContext.Current.Items https://msdn.microsoft.com/en-us/library/system.web.httpcontext.items(v=vs.110).aspx。在这两个中,我绝对会推荐AsyncLocal<T>
over Items
,如果它在您的平台上可用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)