【发布时间】:2021-06-30 22:20:09
【问题描述】:
我正在尝试通过这样做来创建一个缓存管理器,该缓存管理器通过 ASP.NET Core 中的依赖注入注入
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureServices(services => services.AddSingleton<ICacheManager, CacheManager>())
.UseStartup<Startup>();
在Program.cs 中,因此我可以在我的控制器类和Startup.cs 类中访问它(两个构造函数中都有ICacheManager)
但是,每当我更新 Startup.cs 中的缓存时,当我的其他具有此依赖关系的控制器读取它时,它似乎并没有得到反映。这是一个单例实例,我的理解是两个类都将访问同一个对象实例。我错过了什么吗?
在我的Startup.cs 我只是有
public Startup(IConfiguration configuration, ICacheManager cacheManager)
{
Configuration = configuration;
_cacheManager= cacheManager;
}
我会将数据添加到Startup.cs的缓存中
在我的控制器中,我在构造函数中
public ChatRoomController(ICacheManager cacheManager)
{
_cacheManager = cacheManager;
}
当我尝试使用 cacheManager(并发字典)中的数据时,我发现它是空的。
【问题讨论】:
-
请出示
startup.cs和controller类的代码 -
为什么不使用标准的asp.net依赖注入方式?它在 Microsoft 文档中得到了很好的解释,并显示在默认的 asp 项目模板中
标签: c# asp.net-core dependency-injection