網(wǎng)站首頁 編程語言 正文
相關(guān)文章
ASP.NET Core2.2 中的Configuration配置一
ASP.NET Core2.2 中的Configuration配置二
1.前言
ASP.NET Core在應(yīng)用程序上引入Microsoft.Extensions.Configuration配置,可以支持多種方式配置,包括命令行配置、環(huán)境變量配置、文件配置、內(nèi)存配置,自定義配置等等。下面我們就其中幾個配置來聊聊。
2.命令行配置
CommandLineConfigurationProvider在應(yīng)用程序運(yùn)行時會從(例如DOS)命令行參數(shù)鍵值加載配置。要激活命令行配置,請在ConfigurationBuilder的實(shí)例上調(diào)用AddCommandLine擴(kuò)展方法。使用CreateDefaultBuilder初始化新的WebHostBuilder時會自動調(diào)用AddCommandLine。
public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, config) => { // Call other providers here and call AddCommandLine last. config.AddCommandLine(args); }).UseStartup(); }
在Program加入上述代碼并在/Home/Index視圖上添加如下代碼后發(fā)布一個Web版本掛載在IIS上。
在控制臺上輸入DOS命令行dotnet D:\Release\Core\TestWebApp.dll CommandLineKey1=value1配置鍵:CommandLineKey1,值:value1的信息,會看到如下界面信息:
根據(jù)控制臺監(jiān)聽站點(diǎn)連接,在瀏覽器上打開其中一個,比如打開https://localhost:5001/,會看到我們配置命令行信息:
3.文件配置
FileConfigurationProvider是從文件系統(tǒng)加載配置的基類。以下配置為應(yīng)用程序提供專用于特定文件類型:INI配置、JSON配置、XML配置。
3.1 INI配置
IniConfigurationProvider在運(yùn)行時會從INI文件鍵值對加載配置。若要激活I(lǐng)NI文件配置,請在 ConfigurationBuilder的實(shí)例上調(diào)用AddIniFile擴(kuò)展方法,而冒號可用作INI文件配置中的節(jié)點(diǎn)分隔符。現(xiàn)在我們在CoreWeb根目錄下添加一個INI配置文件(命名為config):
[section0] key0=value key1=value [section1] subsection:key=value [section2:subsection0] key=value [section2:subsection1] key=value
而應(yīng)用程序在構(gòu)建主機(jī)時會調(diào)用ConfigureAppConfiguration以指定應(yīng)用程序配置(這里我們指定config.ini文件):
public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, config) => { config.SetBasePath(Directory.GetCurrentDirectory()); config.AddIniFile( "config.ini", optional: true, reloadOnChange: true); }) .UseStartup(); }
從上述代碼可以看到IConfigurationBuilder設(shè)置了文件訪問初始路徑。Optional:文件是否可選;reloadOnChange:如果文件更改,是否應(yīng)重新加載配置。而通過啟動應(yīng)用程序時會看到如下配置信息:
3.2 JSON配置
JsonConfigurationProvider在運(yùn)行時期間會從JSON文件鍵值對加載配置。若要激活JSON文件配置,請在ConfigurationBuilder的實(shí)例上調(diào)用AddJsonFile擴(kuò)展方法。使用 CreateDefaultBuilder初始化新的WebHostBuilder時,會自動調(diào)用AddJsonFile兩次,調(diào)用該方法(AddJsonFile)來從以下文件加載配置,首先會讀取appsettings.json該文件。而應(yīng)用程序啟動時是會默認(rèn)調(diào)用對應(yīng)的appsettings.{Environment}.json環(huán)境版本的,例如appsettings.{Environment}.json會根據(jù)IHostingEnvironment.EnvironmentName加載對應(yīng)文件的環(huán)境版本(開發(fā)模式、生產(chǎn)模式等)。現(xiàn)在我們在CoreWeb根目錄下添加一個JSON配置文件(命名為config):
{ "section0": { "key0": "key0value", "key1": "key1value" }, "section1": { "key0": "key0value", "key1": "key1value" }, "section2": { "subsection0": { "key0": "sub0key0value", "key1": "sub0key1value" }, "subsection1": { "key0": "sub1key0value", "key1": "sub1key1value" } } }
而應(yīng)用程序在構(gòu)建主機(jī)時會調(diào)用ConfigureAppConfiguration以指定除appsettings.json和appsettings.{Environment}.json以外文件的應(yīng)用程序配置(這里我們指定config.json文件):
public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, config) => { config.SetBasePath(Directory.GetCurrentDirectory()); config.AddJsonFile( "config.json", optional: true, reloadOnChange: true); }) .UseStartup(); }
而通過啟動應(yīng)用程序時會看到如下配置信息:
從上述信息可以看到,在我們指定config.json文件后,IConfigurationBuilder會額外多調(diào)用一次AddJsonFile,加上前兩次AddJsonFile,一共是三次。
3.2.1GetSection、GetChildren和Exists
(1)GetSection
:IConfiguration.GetSection獲取指定配置子節(jié)。下面我們通過一個示例來了解下:
public Startup(IConfiguration configuration) { Configuration = configuration; var configSection0 = Configuration.GetSection("section0"); var configSection1 = Configuration.GetSection("section0:key0"); }
而通過啟動應(yīng)用程序時會看到如下配置信息:
通過上述示例可以看到,IConfiguration.GetSection僅僅是獲取到j(luò)son數(shù)據(jù)里面configSection0節(jié)點(diǎn)鍵和路徑,并沒有獲取到它的節(jié)點(diǎn)值。若要獲取section0:key0中的鍵值,請在調(diào)用GetSection時提供完整節(jié)點(diǎn)路徑,如獲取configSection1鍵值示例。
(2)GetChildren
:獲取指定配置樹節(jié)點(diǎn)。下面我們通過一個示例來了解下:
public Startup(IConfiguration configuration) { Configuration = configuration; var configSection = Configuration.GetSection("section2"); var children = configSection.GetChildren(); }
而通過啟動應(yīng)用程序時會看到如下配置信息:
GetChildren獲取了指定section2節(jié)點(diǎn)下所有節(jié)點(diǎn)。
(3)Exists
:使用ConfigurationExtensions.Exists確定配置節(jié)點(diǎn)是否存在。下面我們通過一個示例來了解下:
public Startup(IConfiguration configuration) { Configuration = configuration; var sectionExists0 = Configuration.GetSection("section2").Exists();//true var sectionExists1 = Configuration.GetSection("section2:subsection2").Exists();//false }
而通過啟動應(yīng)用程序時會了解到section2配置節(jié)點(diǎn)如果存在就會返回true,反之則false;同理section2:subsection2路徑配置節(jié)點(diǎn)亦一樣。
3.3 XML配置
XmlConfigurationProvider在運(yùn)行時會從XML文件鍵值對加載配置。若要激活XML文件配置,請在ConfigurationBuilder的實(shí)例上調(diào)用AddXmlFile擴(kuò)展方法。現(xiàn)在我們在CoreWeb根目錄下添加一個XML配置文件(命名為config):
value value value value
而應(yīng)用程序在構(gòu)建主機(jī)時調(diào)用ConfigureAppConfiguration以指定應(yīng)用程序的配置(這里我們指定config.xml文件):
public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, config) => { config.SetBasePath(Directory.GetCurrentDirectory()); config.AddXmlFile( "config.xml", optional: true, reloadOnChange: true); }) .UseStartup(); }
而通過啟動應(yīng)用程序時會看到如下配置信息:
原文鏈接:https://www.cnblogs.com/wzk153/p/11263857.html
相關(guān)推薦
- 2022-09-26 Redis刪除策略的三種方法及逐出算法_Redis
- 2022-05-22 Virtualbox?安裝?docker的流程分析_VirtualBox
- 2022-07-06 pandas如何統(tǒng)計某一列或某一行的缺失值數(shù)目_python
- 2024-01-13 nvm命令
- 2022-09-25 FFmpeg源碼分析:SwsContext圖像轉(zhuǎn)換上下文
- 2022-09-27 Python?創(chuàng)建格式化字符串方法_python
- 2022-09-15 Python利用psutil實(shí)現(xiàn)獲取硬件,網(wǎng)絡(luò)和進(jìn)程信息_python
- 2022-03-03 關(guān)于使用iview table 組件中使用 tooltip 樣式覆蓋的問題
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支