代码之家  ›  专栏  ›  技术社区  ›  Arthur Rizzo

为什么要将IHttpContextAccessor作为单例注入

  •  21
  • Arthur Rizzo  · 技术社区  · 7 年前

    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 在这种情况下更合适吗?

    单身真的是推荐的方式吗?我不是看到了什么吗?

    1 回复  |  直到 7 年前
        1
  •  18
  •   Dai    5 年前

    单身真的是推荐的方式吗?

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

    在该示例中,您将其注册为单例。它不应该是作用域实例吗?

    作为一个单例很好,因为备份存储是异步本地的。

    后来得到了回复

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

    实际上,如果你将其注册为瞬态on。NET内核,则自的实现以来,它无法正常工作。NET Core使用AsyncLocal,它依赖实例变量来跟踪线程本地存储槽。所以它必须在上注册为单亲。净核心。