我正在使用控制台应用程序来使用.NET核心,而我仍然坚持从appsettings.json
阅读。
这是我的代码:
{
"ConnectionStrings": {
"DataBaseConnectionString": "Server=xxxxxx"
}
}
...
var builder = new ConfigurationBuilder()
// .SetBasePath("")
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
configuration = builder.Build();
var xx = configuration.GetConnectionString("DataBaseConnectionString");
我xx
上的空格,我做错了什么?
感谢
答案 0 :(得分:2)
您的代码是正确的。设置optional: false
以检查文件是否存在。控制台应用的关键点是确保appsettings.json
具有Copy to output directory: Always
属性。
这是一个可重复性最小的例子:
//set "optional: false" to fail-fast without a file
var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json", optional: false);
var configuration = builder.Build();
//contains "Server=xxxxxx"
string str = configuration.GetConnectionString("DataBaseConnectionString");
答案 1 :(得分:0)
尝试:
var xx=configuration.GetConnectionString("ConnectionStrings:DataBaseConnectionString");
看起来你将DataBaseConnectionString嵌套在ConnectionStrings段中。
为了使您的代码按照现在的方式工作,您的appsettings需要如下所示:
{
"DataBaseConnectionString": "Server=xxxxxx"
}
https://docs.asp.net/en/latest/fundamentals/configuration.html