在我见过IHttpContextAccessor
注射的所有例子中,它被设置为单身人士。
示例:
How to add IHttpContextAccessor in the Startup class in the DI in ASP.NET Core 1.0? Injecting IHttpContextAccessor into ApplicationDbContext ASP.NET Core 1.0 .NET Core IHttpContextAccessor issue
我发现它有点奇怪,因为HttpContext
看起来像是映射到请求的东西。在这种情况下,不会AddScoped
更合适吗?
Singleton真的是推荐的方式吗?我没有看到什么吗?
答案 0 :(得分:7)
Singleton真的是推荐的方式吗?
是强>
根据与GitHub上提出的问题相关的评论
https://github.com/aspnet/Hosting/issues/793#issuecomment-224828588
在该示例中,您将其注册为单身人士。它不应该是一个范围的实例吗?
没关系,因为后备存储是异步本地的。
后来得到了回复
https://github.com/aspnet/Hosting/issues/793#issuecomment-224924030
实际上,如果您在.NET Core上将其注册为Transient,那么它无法正常工作,因为.NET Core的实现使用AsyncLocal,它依赖于实例变量来跟踪TLS存储槽。因此必须在.NET Core上注册为单例。