首页 > 解决方案 > 我可以根据选项有条件地添加托管服务吗?

问题描述

在 ASP.NET Core 中,我可以使用IServiceProvider.AddOptions来注册选项。

但是,我还想使用 注册托管服务IServiceProvider.AddHostedService前提是选项值为true

如何根据选项有条件地添加托管服务?

标签: asp.net-coredependency-injection

解决方案


如果我理解你的意思正确,你想使用从其他文件(如 appsettings.json)读取的选项来确定是否添加托管服务。你可以参考以下两种不同的方法:

1.从 Startup.cs ConfigureServices 方法中的 appsetting.json 中读取选项值

var option =Convert.ToBoolean(Configuration.GetSection("Options:value").Value);
if(option)
{
   // add hosted services you want
    services.AddHostedService<ServiceName>();
}

2.从其他地方的appsetting.json中读取option值

var configuration = new ConfigurationBuilder()
               .AddJsonFile(Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json"))
               .Build();
var option = Convert.ToBoolean(configuration.GetSection("Options:value").Value);

应用设置.json

"Options":{
  "value": true
 }

推荐阅读