Why should I inject IHttpContextAccessor as a Singleton

According to comments associated with an issue raised on GitHub

https://github.com/aspnet/Hosting/issues/793#issuecomment-224828588

In that sample, you are registering it as a singleton. Shouldn’t it be a scoped instance?

It’s fine being a singleton because the backing store is async local.

Which got a later reply

https://github.com/aspnet/Hosting/issues/793#issuecomment-224924030

Actually if you register it as a Transient on .NET Core then it doesn’t work properly since the implementation for .NET Core is using a AsyncLocal which relies upon the instance variable to track the TLS storage slot. So it has to be registered as a singleton on .NET Core.

Author:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.