5

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.

1 Answer 1

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.

Sign up to request clarification or add additional context in comments.

2 Comments

Can I ask you the reason why you recommend AsyncLocal over Items?
I recommend AsyncLocal<T> over HttpContext.Current because HttpContext.Current is considered a poor design and has been removed in ASP.NET Core.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.