我在ASP.NET Core项目中有appsettings.json(以及appsettings.development.json)。我想根据执行模式(生产,开发......)注入配置文件,就像Core一样,但是我希望在不同项目中使用的IoC
使用Core的DI,我有:
config.AddJsonFile($"appsettings.json", optional: true, reloadOnChange: false)
.AddJsonFile($"appsettings.{environmentName}.json", true, true)
.AddEnvironmentVariables();
我在每个控制器中注入IConfiguration。
好的,使用Autofac我尝试在另一个项目(IoC容器所在的位置)中添加文件链接到JSON并测试下一个代码:
configurationBuilder.AddJsonFile("appsettings.json");
//configurationBuilder.AddJsonFile($"appsettings.json", optional: true, reloadOnChange: false)
//.AddJsonFile($"appsettings.{environmentName}.json", true, true)
//.AddEnvironmentVariables();
var module = new ConfigurationModule(configurationBuilder.Build());
builder.RegisterModule(module);
和
this.container.Resolve<IConfiguration>();
但我得到了下一个错误:
配置文件&#39; appsettings.json&#39;找不到,也不是可选的。物理路径是&#39; C:\ Jhon \ source \ Workspaces \ Project \ Development \ Application \ Api \ Api \ bin \ Debug \ netcoreapp2.0 \ appsettings.json&#39;。
答案 0 :(得分:0)
我认为您的代码在依赖根配置期间搜索Names <- get_query(paste0("con %>% tbl('libraries') %>% filter(libraryid %in% c(", libraries_comma_separated, ")) %>% select(name) %>% collect()"))
文件的位置时会遇到麻烦。
正如我所见,最简单的解决方案是将文件的appsettings.json
设置切换为Copy to Output directory
。
但我还有一些事情要讲。
第一个。如果您使用的是ASP.NET Core 2.x,则无需编写
Copy Always
因为config.AddJsonFile($"appsettings.json", optional: true, reloadOnChange: false)
.AddJsonFile($"appsettings.{environmentName}.json", true, true)
.AddEnvironmentVariables();
可以为您的
BuildWebHost
第二个
我认为使用原始public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
并不是一个好主意。我宁愿选择options模式。它有助于我们划分逻辑和代码,从IConfiguration
中提取设置。