C# 如何在以后执行某些任务时更新asp.net core di容器
我在di容器上保留了设置值,可以通过管理页面更改设置,但当我再次在服务集合中添加新设置值时,它会给我旧设置值。C# 如何在以后执行某些任务时更新asp.net core di容器,c#,asp.net,.net,asp.net-core,di-containers,C#,Asp.net,.net,Asp.net Core,Di Containers,我在di容器上保留了设置值,可以通过管理页面更改设置,但当我再次在服务集合中添加新设置值时,它会给我旧设置值。 如何在.net core上更新di容器值/服务。您需要插入IOptionsSnapshot,而不是直接插入强类型设置,其中T是您的设置类。这将导致它在重新加载配置时更新值。例如: public class MyController : Controller { private readonly IOptionsSnapshot<MySettings> _settin
如何在.net core上更新di容器值/服务。您需要插入
IOptionsSnapshot
,而不是直接插入强类型设置,其中T
是您的设置类。这将导致它在重新加载配置时更新值。例如:
public class MyController : Controller
{
private readonly IOptionsSnapshot<MySettings> _settings;
public MyController(IOptionsSnapshot<MySettings> settings)
{
_settings = settings;
}
...
}
然后,您可以继续像以前一样将MySettings
注入控制器
注意:IOptionsSnapshot
在ASP.NET Core 1.1+中提供。无法在任何以前的版本中重新加载设置
services.Configure<MySettings>(Configuration.GetSection("MySettings"));
services.AddScoped(cfg => cfg.GetService<IOptionsSnapshot<MySettings>>().Value);