asp.net core2 mvc 基础教程--读取配置文件

绑定json 配置文件

var builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json")
    .AddJsonFile("appsettings.Development.json", optional: true, reloadOnChange: true).Build();

SetBasePath 方法设置 文件目录 可选 不设置 则默认是 web 运行路径
AddJsonFile 设置要读取的josn 文件
reloadOnChange 为true 表示 当json文件被修改时重新加载      
AddJsonFile 也可以用  .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true }) 来代替

多个配置源时 配置键相同时,读取选择最后一个添加的文件(AddJsonFile)。






若要读取所有添加文件的配置信息,可遍历ConfigurationRoot的Providers属性。
 var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json")
                .AddJsonFile("appsettings.Development.json");
            var config = builder.Build();

            foreach (var provider in config.Providers)
            {
                provider.TryGet("ConnectionStrings:DefaultContext", out string defaultContext);
                Console.WriteLine(defaultContext);
            }

config 绑定后有多种读取方式

第一种 Configuration["key"] 多级加: Configuration["key:key"]

第二种Configuration .GetSection("key") 多级 继续 .GetSection("key")  例子:Configuration.GetSection("key").GetSection("key").Value;

第三种 Configuration.GetValue<int>("key"); Configuration.GetValue<int>("key:key")

第四种 Configuration.GetSection("key").Get<Node>();  绑定到对象 绑定集合 Configuration.GetSection("key").Get<IEnumerable<node>>()  绑定到集合上

第五种 Options 模式  在services 注册

 

public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<Theme>(Configuration.GetSection("Theme"));

        services.AddControllersWithViews();  //3.0中启用的新方法
    }

 

public class ValuesController : Controller
{
    private IOptions<Theme> _options = null;
    public ValuesController(IOptions<Theme> options)
    {
        _options = options;
    }

    public ContentResult GetOptions()
    {
        return new ContentResult() { Content = $"options:{ _options.Value.Name}" };
    }
}

利用 IOptions 来获取注入的配置类

下面是自定义配置源并注册

  IConfiguration _configuration;
            var builder = new ConfigurationBuilder();
            builder.SetBasePath(Directory.GetCurrentDirectory());
            _configuration = builder.Add(new JsonConfigurationSource { Path = "my.json", Optional = false, ReloadOnChange = true }).Build();
            services.Configure<node>(_configuration.GetSection("key1"));

也可以直接在 program.cs 文件 里 找到 CreateDefaultBuilder 后加 ConfigureAppConfiguration

  WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration(builder =>
        {
            builder.AddJsonFile("appconfiguration.json");
        })
        .UseStartup<Startup>();

 

posted @ 2020-06-09 22:47  学做flutter的小菜鸡  阅读(238)  评论(0编辑  收藏  举报