Chr*_*rdt 8 c# asp.net-core-mvc asp.net-core asp.net-core-2.0
我已经用ConfigurationProvider实体框架编写了一个自定义.因为我也希望在运行时使其可更新,所以我创建了一个IWritableableOption.
我需要在更新后刷新配置.这可以通过IConfigurationRoot.Reload.
但是,我如何获得IConfigurationRoot.net核心2?
我发现,在以前的版本中IConfigurationRoot,它是启动的一部分.但是在.net核心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; }
Run Code Online (Sandbox Code Playgroud)
我也发现了,我可以使用自己的实例
WebHost.CreateDefaultBuilder(args).ConfigureAppConfiguration(context, builder) => {
var configurationRoot = builder.build()
})
Run Code Online (Sandbox Code Playgroud)
但我想更新Startup使用的配置.
那么我怎样才能将其IConfigurationRoot用于Startup将其注入我的服务集合中?
Chr*_*rdt 13
感谢Dealdiane的评论.
我们可以低估IConfiguration:
public Startup(IConfiguration configuration)
{
Configuration = (IConfigurationRoot)configuration;
}
public IConfigurationRoot Configuration { get; }
Run Code Online (Sandbox Code Playgroud)
我仍然不确定,如果这是预期的方式,因为IConfiguration不做任何保证IConfigurationRoot.
或者您可以在初始化之前注入它Startup:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
IConfigurationRoot configurationRoot = null;
return WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, builder) =>
{
configurationRoot = builder.Build();
})
.ConfigureServices(services =>
{
services.AddSingleton<IConfigurationRoot>(configurationRoot);
services.AddSingleton<IConfiguration>(configurationRoot);
})
.UseStartup<Startup>();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4968 次 |
| 最近记录: |