讀取appSetting文件
配置文件如下
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"WebSetting": {
"WebName": "ASP.NET Core",
"Title": "Hello Title",
"Behavior": {
"IsCheckIp": true,
"MaxConnection": 300
}
}
}
方法一、鍵讀取
首先,在類構造函數注入 IConfiguration,例如:
public IConfiguration Configuration { get; } public ValuesController(IConfiguration configuration) { Configuration = configuration; }
然后就可以在該類任何方法讀取:
[HttpGet] public ActionResult<IEnumerable<string>> Get() { var title = Configuration["WebSetting:Title"]; var isCheckIp = Configuration["WebSetting:Behavior:IsCheckIp"]; return new string[] { title, isCheckIp }; }
方法二、綁定讀取
首先,還是類構造函數注入ICofiguration
public IConfiguration Configuration { get; } public ValuesController(IConfiguration configuration) { Configuration = configuration; }
然后,創建配置項結構對應的配置模型
public class Behavior { public bool IsCheckIp { get; set; } public int MaxConnection { get; set; } } public class WebSetting { public string WebName { get; set; } public string Title { get; set; } public Behavior Behavior { get; set; } }
最后如下方式讀取配置
[HttpGet] public ActionResult<IEnumerable<string>> Get() { var webSetting = new WebSetting(); Configuration.GetSection("WebSetting").Bind(webSetting); var webName = webSetting.WebName; var isCheckIp = webSetting.Behavior.IsCheckIp; return new string[] { webName, isCheckIp.ToString() }; }
方法三、注冊讀取
首先,創建配置項結構對應的配置模型
public class Behavior { public bool IsCheckIp { get; set; } public int MaxConnection { get; set; } } public class WebSetting { public string WebName { get; set; } public string Title { get; set; } public Behavior Behavior { get; set; } }
然后,在 ConfigureServices 方法中注冊
public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); //注冊配置 services.Configure<WebSetting>(Configuration.GetSection("WebSetting")); }
最后讀取配置:在讀取配置的類構造函數注入IOptions,就可以在該類任何位置讀取配置如下
1、構造函數注入讀取
private IOptions<WebSetting> webSettingOption; //構造函數 public ValuesController(IOptions<WebSetting> _webSettingOption) { webSettingOption = _webSettingOption; } [HttpGet] public ActionResult<IEnumerable<string>> Get() { var webName = webSettingOption.Value.WebName; var isCheckIp = webSettingOption.Value.Behavior.IsCheckIp; return new string[] { webName, isCheckIp.ToString() }; }
自定義配置文件
首先新建配置文件,名稱customSetting.json,並右擊該文件選擇屬性進行設置,設置復制到輸出目錄:始終復制
{ "Name": "Rick", "Age": 99, "TicketSetting": { "BaseHost": "www.baidu.com", "Port": 9950 } }
然后定義配置文件結果類
public class CustomSetting { public string Name { get; set; } public int Age { get; set; } public TicketSetting TicketSetting { get; set; } } public class TicketSetting { public string BaseHost { get; set; } public int Port { get; set; } }
其次ConfigureServices方法進行配置注冊
public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); var config = new ConfigurationBuilder() .AddJsonFile("customSetting.json") .Build(); services.Configure<CustomSetting>(config); }
最后讀取
private IOptions<CustomSetting> _option; public ValuesController(IOptions<CustomSetting> option) { _option = option; } [HttpGet] public ActionResult<IEnumerable<string>> Get() { var host = _option.Value.TicketSetting.BaseHost; return new string[] { host }; }
