【问题标题】:asp.net core dependency injection issue - AddScoped not creating a new instanceasp.net 核心依赖注入问题 - AddScoped 未创建新实例
【发布时间】:2018-05-17 00:02:36
【问题描述】:

我一直在使用 asp.net 核心依赖注入,但我看到了一个意想不到的行为,至少对我来说是这样。我正在向容器中添加一个新服务,如下所示:

services.AddScoped<IMyClass>(provider =>
{
   return new MyClass(
      "anyValue"
   });

之后,我将该类注入到另一个类中以使用它:

public class AnotherClass(IMyClass xxx){

}

问题是基于请求信息在 MyClass 构造函数上进行了一些配置。问题是我看到 MyClass 构造函数只在应用程序启动时执行。之后,该类似乎对所有调用使用相同的实例。当我使用 Scoped 服务时,我希望每个请求都有一个新实例,我错了吗?

谢谢。

【问题讨论】:

  • 请举个例子。
  • 确保MyClass 没有像Captive Dependency 一样保持活动状态。
  • 我相信我发现了问题,但仍然不知道如何解决。如果我将 IMyClass 注入控制器,则作用域生命周期将起作用。如果我将它注入另一个类(在我的情况下,在另一个项目中),它似乎使用单例。

标签: asp.net-core dependency-injection .net-core


【解决方案1】:

好的。问题是接收注入的类作为单例添加到容器中。我只是将其更改为 Scoped 并且一切正常。

谢谢!

【讨论】:

    猜你喜欢
    • 2020-04-04
    • 2018-01-03
    • 1970-01-01
    • 2021-12-11
    • 2021-06-30
    • 2019-12-19
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多