|
AppSetting.json
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*", "Title": "Hello World!", "Message": "Hello World - AppSetting - 啊!", "ConnectionStrings": { "Mysql": "server=localhost;port=3306;userid=root;pwd=123456;database=testefdb", "MsSql": "Data Source=.;Initial Catalog=testefdb;User Id=root;Password=123456;" } } jsconfig.json
{ "Name": "Joker", "Sex": "Man", "Describe": "描述", "Message": "Hello World - JsConfig - 啊!" } 構(gòu)造函數(shù)注入?yún)?shù) public IConfiguration Configuration { get; } public Startup(IConfiguration configuration) { Configuration = configuration; } 獲取配置文件參數(shù) 1.獲取指定key的值 var title = Configuration["Title"]; var mysql = Configuration["ConnectionStrings:Mysql"]; 2.綁定配置模型對(duì)象 // 獲取所有配置 var appSetting = new MyAppSetting(); Configuration.Bind(appSetting); var loggerDefault = appSetting.Logging.LogLevel.Default; // 獲取指定節(jié)點(diǎn)配置 var connectionstrings = new Connectionstrings(); Configuration.GetSection("ConnectionStrings").Bind(connectionstrings); var mssql = connectionstrings.MsSql; 3.注冊(cè)配置選項(xiàng)的服務(wù) 3.1.在 Startup/ConfigureServices 注冊(cè)配置選項(xiàng)服務(wù) // 注冊(cè)配置選項(xiàng)服務(wù) services.Configure<MyAppSetting>(Configuration); // 注冊(cè) 自定義配置信息 var config = new ConfigurationBuilder().AddJsonFile("jsconfig.json", true, true).Build(); var name = config["Name"]; services.Configure<MyJsConfig>(config); 3.2.在 Startup/Configure 獲取配置 public void Configure(IOptions<MyAppSetting> appSettingOptions, IOptionsSnapshot<MyJsConfig> myJsConfigoptions) { // 讀取 配置信息【appsettings.json】 var loggerMicrosoft = appSettingOptions.Value.Logging.LogLevel.Microsoft; // 讀取 自定義配置信息【jsconfig.json】 var describe = myJsConfigoptions.Value.Describe; } *注: 1.在 Startup/ConfigureServices 通過(guò) AddJsonFile 注冊(cè)自定義配置信息,使用IOptionsSnapshot【站點(diǎn)啟動(dòng)后,每次獲取到的值都是配置文件里的最新值】沒(méi)有效果,需要在 Program/CreateHostBuilder 中進(jìn)行配置【有知道的大佬求解釋】 public static IHostBuilder CreateHostBuilder(string[] args) { // 創(chuàng)建默認(rèn)Builder,完成各種基礎(chǔ)配置: Host.CreateDefaultBuilder 已注冊(cè) appsetting.json IHostBuilder hostBuild = Host.CreateDefaultBuilder(args); // 配置默認(rèn)WebHost hostBuild.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); hostBuild.ConfigureAppConfiguration(configBuilder => { // 注冊(cè) 自定義配置信息,reloadOnChange:如果文件更改,是否應(yīng)重新加載配置 configBuilder.AddJsonFile("jsconfig.json", true, reloadOnChange: true); }); return hostBuild; } 2.appsetting.json 和 jsconfig.json 兩個(gè)配置文件會(huì)同時(shí)生效,同名的值后者優(yōu)先【jsconfig.json】 3.早期Core版本獲取動(dòng)態(tài)配置需要手動(dòng)指定 reloadOnchange = true,目前3.1已默認(rèn)配置,只需要使用 Microsoft.Extensions.Options.IOptionsSnapshot 就可以
|
|
|