c# - 如何在 .net core 2 启动时访问 IConfigurationRoot?

标签 c# asp.net-core asp.net-core-mvc asp.net-core-2.0

我用 Entity Framework 编写了一个自定义的ConfigurationProvider。因为我还想让它在运行时可更新,所以我创建了一个 IWritableableOption .

更新后我需要刷新配置。这可以通过 IConfigurationRoot.Reload 完成.

但是,如何在 .net core 2 中获取 IConfigurationRoot

我发现,在以前的版本中,IConfigurationRoot 是启动的一部分。然而,在 .net core 2 中,我们只有更简单的类型 IConfiguration:

public Startup(IConfiguration configuration)
{
    // I tried to change this to IConfigurationRoot,
    // but this results in an unresolved dependency error
    Configuration = configuration;
}

public IConfiguration Configuration { get; }

我也发现了,我可以使用

WebHost.CreateDefaultBuilder(args).ConfigureAppConfiguration(context, builder) => {
    var configurationRoot = builder.build()
})

但我想更新 Startup 使用的配置。

那么如何获取 Startup 使用的 IConfigurationRoot 并将其注入(inject)到我的服务集合中呢?

最佳答案

感谢Dealdiane's评论。

我们可以向下转换IConfiguration:

public Startup(IConfiguration configuration)
{
    Configuration = (IConfigurationRoot)configuration;
}

public IConfigurationRoot Configuration { get; }

我仍然不确定这是否是预期的方式,因为 IConfiguration 不对 IConfigurationRoot 做出任何保证。

关于c# - 如何在 .net core 2 启动时访问 IConfigurationRoot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48939567/

相关文章:

c# - 用于验证密码的 JavaScript

c# - 什么时候在WPF中引发CollectionViewSource.Filter事件?

.net - Blazor Wasm - 如何从继承的组件更新基础组件?

asp.net-core - 当前上下文中不存在名称 'ModelState'

asp.net-core - 如何在 ActionFilterAttribute 中强制请求失败

c# - 需要意外后果的 C# 示例

c# - 有没有办法将 pdb 文件与 ilmerge 合并?

c# - ASP.NET Core - 无法在属性 '1' 上设置类型 'System.Int32' 的默认值 'MerchantStatus'

asp.net - 在 IIS 上使用 .NET Core 运行 ASP.NET 5 (MVC 6)

c# - 无效操作异常 : No authentication handler is registered for the scheme 'CookieSettings'