NetCore配置文件讀取


讀取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 };
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM