美文网首页
.net core config读取

.net core config读取

作者: Lulus | 来源:发表于2018-01-09 23:18 被阅读0次

    最简单的方式

    引用

    Microsoft.Extensions.Configuration     
    Microsoft.Extensions.Configuration.Json      
    

    json文件

    新建一个ConfigTest.json
    右键属性,设置为“始终复制”
    数据如下:

    {
      "TotalCount": 2,
      "Students": [
        {
          "Name": "Lili",
          "Sex": "女"
        },
        {
          "Name": "Tom",
          "Sex": "男"
        }
      ]
    }
    

    读取json

    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方法

    Bind读取配置

    引用

    第一个示例中的引用也要添加

    Microsoft.Extensions.Configuration.Binder
    

    读取json

    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方法

    Option

    引用

    第一个示例中的引用也要添加

    Microsoft.Extensions.Options
    

    在appsettings.json中添加测试数据

    {
      "MyData": {
        "TotalCount": 2,
        "Students": [
          {
            "Name": "Lili",
            "Sex": "女"
          },
          {
            "Name": "Tom",
            "Sex": "男"
          }
        ]
      } 
    }
    

    实体类需要实现IOptions<T>

    public class ConfigTest:IOptions<ConfigTest>
    {
        public int TotalCount { get; set; }
        public List<Student> Students { get; set; }
        public ConfigTest Value => this;
    }
    

    读取json

    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();
    

    示例代码

    https://github.com/zLulus/NotePractice/blob/dev3/Website/DotNetCore/CoreWebsite/Controllers/ConfigController.cs

    热更新

    定义

    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方法

    相关文章

      网友评论

          本文标题:.net core config读取

          本文链接:https://www.haomeiwen.com/subject/cnknnxtx.html