-
Notifications
You must be signed in to change notification settings - Fork 22
.net core config读取
L edited this page Jan 9, 2018
·
3 revisions
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Json
新建一个ConfigTest.json
右键属性,设置为“始终复制”
数据如下:
{
"TotalCount": 2,
"Students": [
{
"Name": "Lili",
"Sex": "女"
},
{
"Name": "Tom",
"Sex": "男"
}
]
}
var builder = new ConfigurationBuilder();
builder.AddJsonFile("ConfigTest.json");
var config = builder.Build();
Console.WriteLine(config["TotalCount"]);
//索引
Console.WriteLine(config["Students:0:Name"]);
Console.WriteLine(config["Students:0:Sex"]);
Console.WriteLine(config["Students:1:Name"]);
Console.WriteLine(config["Students:1:Sex"]);
https://github.com/zLulus/NotePractice/blob/dev3/Website/DotNetCore/CoreConsole/Config/ConfigReadDemo.cs 的ReadConfig方法
第一个示例中的引用也要添加
Microsoft.Extensions.Configuration.Binder
var builder = new ConfigurationBuilder()
.AddJsonFile("ConfigTest.json");
ConfigTest configTest=new ConfigTest();
var config = builder.Build();
//Microsoft.Extensions.Configuration.Binder
config.Bind(configTest);
Console.WriteLine(configTest.TotalCount);
Console.WriteLine(configTest.Students[0].Name);
Console.WriteLine(configTest.Students[0].Sex);
Console.WriteLine(configTest.Students[1].Name);
Console.WriteLine(configTest.Students[1].Sex);
https://github.com/zLulus/NotePractice/blob/dev3/Website/DotNetCore/CoreConsole/Config/ConfigReadDemo.cs 的ReadConfigByBind方法
第一个示例中的引用也要添加
Microsoft.Extensions.Options
{
"MyData": {
"TotalCount": 2,
"Students": [
{
"Name": "Lili",
"Sex": "女"
},
{
"Name": "Tom",
"Sex": "男"
}
]
}
}
public class ConfigTest:IOptions<ConfigTest>
{
public int TotalCount { get; set; }
public List<Student> Students { get; set; }
public ConfigTest Value => this;
}
public class ConfigController : Controller
{
private ConfigTest _configTestByOptions;
private readonly IConfiguration _configuration;
public ConfigController(IConfiguration configuration)
{
_configuration = configuration;
}
public IActionResult Index()
{
//GetSection:必须先读节点
//ConfigTest实现接口IOptions<ConfigTest>
_configTestByOptions = _configuration.GetSection("MyData").Get<ConfigTest>();
return View();
}
}
CreateDefaultBuilder方法已经读取appsettings.json,所以在这个示例中,我们没有调用AddJsonFile方法添加appsettings.json文件,而是直接读取appsettings.json中的数据即可
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
optional:该配置文件是否可选,如果optional=false,加载失败会抛出异常
reloadOnChange:文件被修改时是否重新加载,热更新就是这个,设置为true即可
public static IConfigurationBuilder AddJsonFile(this IConfigurationBuilder builder, string path, bool optional, bool reloadOnChange)
注意,热更新是修改bin目录下的生成的文件
https://github.com/zLulus/NotePractice/blob/dev3/Website/DotNetCore/CoreConsole/Config/ConfigReadDemo.cs 的ReadConfigHotUpdate方法