ASP.NET Core配置框架已內建支援 JSON、XML 和 INI 配置檔案,記憶體配置(直接通過程式碼設定值),環境變數配置等方式配置引數。
本文主要和大家講一下我們在專案中常用的以配置檔案的方式進行配置。本文以.NetCore2.2為例
配置檔案包含了如下幾種常用方式。
1.使用ASP.NET Core框架自帶的IConfiguration應用程式配置,通過建構函式的方式注入並使用選擇模式使用配置引數:Configuration[引數名稱]
2.使用選項IOptions和配置物件方式
當你建立了一個Web API應用程式的時候,ASP.NET Core框架會預設為你提供一個配置檔案:appsettings.json,並且框架預設指向了該配置檔案;但是當你建立例如控制檯應用程式的時候,可能就需要我們手動新增配置檔案,並手動指向該配置檔案。
指定專案配置檔案方式:
在專案的Program檔案中,新增ConfigureAppConfiguration中的程式碼:
1 public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 2 WebHost.CreateDefaultBuilder(args) 3 .ConfigureAppConfiguration((hostcontext, config) => 4 { 5 //獲取專案環境 6 var env = hostcontext.HostingEnvironment; 7 config.SetBasePath(env.ContentRootPath); 8 //指定專案配置檔案 屬性reloadOnChange表示配置檔案發生變化的時候,專案自動重新載入。 9 config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
10 }) 11 .UseStartup<Startup>();
對於指定多配置環境的專案(主要有開發環境Development和生產環境Production),可使用如下方式:
1 public static IWebHostBuilder CreateWebHostBuilder(string[] args) => 2 WebHost.CreateDefaultBuilder(args) 3 .ConfigureAppConfiguration((hostcontext, config) => 4 { 5 //獲取專案環境 6 var env = hostcontext.HostingEnvironment; 7 config.SetBasePath(env.ContentRootPath); 8 //指定專案配置檔案 屬性reloadOnChange表示配置檔案發生變化的時候,專案自動重新載入。 9 config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 10 //指定專案不同環境下使用哪個配置檔案(env.EnvironmentName主要有開發環境Development和生成環境Production),對於指定環境的配置檔案非常有用 11 .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true); 12 //啟用多環境配置 13 config.AddEnvironmentVariables(); 14 }) 15 .UseStartup<Startup>();
指定配置檔案之後,我們便可以具體使用配置引數:
針對如下配置檔案appsettings.json:獲取WebOptions—Name節點值
{
"WebOptions": { "Name": "Production" },
"Logging": {
"LogLevel": {
"Default": "Warning"
}
}
}
方式一,通過建構函式的方式注入IConfiguration配置介面,並使用
public class Test : ITest { private readonly IConfiguration configuration;
//建構函式方式注入 public Test(IConfiguration _configuration) { configuration = _configuration; } public Task<string> Get() { //以選擇模式的方式獲取配置引數 var name = configuration["WebOptions:Name"]; //返回 return Task.FromResult(name); } }
方式二·:使用選項IOptions和配置物件方式
首先,新增配置檔案對應的實體類。這裡的類名,屬性名要對應配置檔案引數名稱。
public class WebOptions { public string Name { get; set; } }
然後,在Start檔案ConfigureServices類中,註冊與Option繫結的配置例項。
1 public void ConfigureServices(IServiceCollection services) 2 { 3 //註冊WebOptions配置例項 4 services.Configure<WebOptions>(Configuration.GetSection(nameof(WebOptions))); 5 services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); 6 }
最後,通過建構函式注入Options繫結配置,並使用。
1 public class Test : ITest 2 { 3 private readonly WebOptions webOptions; 4 5 /// <summary> 6 /// 建構函式注入 7 /// </summary> 8 /// <param name="_webOptions"></param> 9 public Test(IOptions<WebOptions> _webOptions) 10 { 11 webOptions = _webOptions.Value; 12 } 13 14 public Task<string> Get() 15 { 16 //以物件的方式獲取引數值 17 var name = webOptions.Name; 18 return Task.FromResult(name); 19 } 20 }
好了,關於ASP.NET Core中常用的配置檔案引數配置方式就介紹到這裡。