【发布时间】:2018-03-01 09:47:22
【问题描述】:
我正在使用 asp.net + Autofac。
我正在尝试加载自定义 JSON 配置文件,并基于该文件创建/实例化一个 IConfiguration 实例,或者至少将我的文件包含到默认情况下构建的任何 IConfiguration asp.net 中。
我的问题是 asp.net 似乎覆盖了 IConfiguration 的依赖注册。
我似乎无法注册我自己的 IConfiguration 对象 - DI 容器将始终将此解析为似乎由 asp.net 库本身生成的某个实例。
而且我不确定如何让 asp.net 至少另外加载我的自定义配置文件 - 即是否有任何方法可以获取它使用的 ConfigurationBuilder,并在它之前添加我自己的文件构建 IConfiguration 对象。
我尝试了以下方法:
public class Startup
{
public IConfigurationRoot Configuration { get; }
public Startup(IHostingEnvironment env)
{
this.Configuration = new ConfigurationBuilder()
.SetBasePath(path)
.AddJsonFile("somefile.json")
.Build();
}
public IServiceProvider ConfigureServices(IServiceCollection services)
{
// Add framework services.
services
.AddMvc()
.AddControllersAsServices();
var builder = new ContainerBuilder();
builder.Register(x => this.Configuration).As<IConfiguration>();
builder.Populate(services);
var container = builder.Build();
// This will return another IConfiguration instance then the one I registered;
// namely One that contains 1 provider, a MemoryConfigurationProvider
var xxx = container.Resolve<IConfiguration>();
return new AutofacServiceProvider(container);
}
}
如何让 asp.net 也加载我的自定义 JSON 配置文件?
【问题讨论】:
-
您使用的是哪个版本的 ASPNET Core?
标签: c# asp.net-core autofac