具有动态(运行时)值的选项配置

时间:2019-04-12 13:52:11

标签: asp.net-core .net-core asp.net-core-mvc

我有一个MySettings类,我想将其配置为“选项”以通过依赖项注入使其可用。

我目前正在(使用服务构建器扩展方法):

services.Configure<MySettings>(configuration.GetSection(MySettings.CustomSectionName));

我的问题是设置的一部分来自应用程序设置,而其他值仅在运行时(启动)才知道。

因此,我尝试找出如何通过添加运行时提供的值来配置设置。我试图将值添加到配置

configuration["SectionName:ValueX"] = "my runtime value";

那是行不通的,ValueX始终为null(将选项注入到控制器中时)。

对我有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试注册MySettings而不是像

那样注册IOptions<MySettings>
public void ConfigureServices(IServiceCollection services)
{          
    var mySettings = new MySettings();
    Configuration.Bind("MySettings", mySettings);
    mySettings.Title = "Hello";
    services.AddSingleton(mySettings);
}

并像

一样使用MySettings
public class HomeController : Controller
{
    private readonly MySettings _settings;
    public HomeController(MySettings settings)
    {
        _settings = settings;
    }
    public IActionResult Index()
    {
        return Ok(_settings);
    }