Is there a possibility to use thread static like variables within a single request? The current code uses a thread static variable for logging purposes and now we want to use async controller methods (with async and await pattern) which results in problems because the variable is null when a new thread is opened.
Asked
Active
Viewed 1,931 times
1 Answers
14
await
can cause thread jumps, so thread static variables will naturally cause problems.
To work around this, you can either use AsyncLocal<T>
(available in .NET 4.6), or (if you must) HttpContext.Current.Items
. Of those two, I would definitely recommend AsyncLocal<T>
over Items
, if it's available on your platform.

Stephen Cleary
- 437,863
- 77
- 675
- 810
-
Can I ask you the reason why you recommend AsyncLocal over Items? – vinhent Oct 10 '18 at 16:02
-
2I recommend `AsyncLocal
` over `HttpContext.Current` because `HttpContext.Current` is considered a poor design and has been removed in ASP.NET Core. – Stephen Cleary Oct 11 '18 at 14:27