ASP.Net?Core?MVC基礎(chǔ)系列之獲取配置信息
這一節(jié), 我們來講解.Net Core 是怎么獲取配置信息的.
.Net Core配置信息來源主要有以下幾種
- 1.appsettings.json文件
- 2. User Secrets
- 3. 環(huán)境變量
- 4. 命令行參數(shù)
- 5. 自定義XML等等
在我們上一節(jié)新建的項(xiàng)目中, 已經(jīng)默認(rèn)有appsettings.json文件了, 并且appsettings.json默認(rèn)會(huì)加載到項(xiàng)目中來, 至于為什么會(huì)默認(rèn)加載, 我們可以通過源碼進(jìn)行分析, VS2017反編譯不好用, F12看不到完整的代碼, 這里我使用ILSpy反編譯了.
我們找到WebHost.CreateDefaultBuilder(args), 也就是CreateDefaultBuilder方法, 看到源碼如下圖

紅框部分就是默認(rèn)的加載appsettings.json文件, 細(xì)心的博友可能發(fā)現(xiàn)了后面還有個(gè)get_EnvironmentName, 這個(gè)就是獲取當(dāng)前環(huán)境變量, 加載不同的appsettings.json文件, 其實(shí)在項(xiàng)目新建好之后, 默認(rèn)是有appsettings.json和appsettings.Development.json兩個(gè)json文件的, 那么這樣子, .Net Core默認(rèn)就會(huì)把這個(gè)兩個(gè)json配置都進(jìn)行加載, 如果兩個(gè)json文件有兩個(gè)一樣的配置, 后面加載的會(huì)覆蓋前面加載的. 也可以理解為appsettings.json是全局配置,appsettings.Development.json是開發(fā)配置. 我們可以做個(gè)試驗(yàn)
我們新建的空MVC項(xiàng)目, 運(yùn)行默認(rèn)訪問只會(huì)輸出一句Hello World! , 這是代碼默認(rèn)的, 如圖

現(xiàn)在我們把這個(gè)字符串配置到 json 文件中試試
打開appsettings.json, 添加一個(gè)配置, 如圖

我配置了一個(gè)新的歡迎語, 然后去取這個(gè)值, 取值需要注入一個(gè)IConfiguration接口對(duì)象, 才能去獲取配置信息, 我們?cè)赟tartup類里面的Configure方法的參數(shù)進(jìn)行注入, 注入之后進(jìn)行取值, 修改默認(rèn)輸出的Hello World!, 代碼如圖

然后F5運(yùn)行, 可以看到網(wǎng)頁上輸出Hello .Net Core, 沒有問題. 那么接下來我們?cè)赼ppsettings.Development.json里面配置一個(gè)相同的配置項(xiàng), 把值改一下, 如圖

然后再F5運(yùn)行項(xiàng)目, 網(wǎng)頁就輸出Hello .Net Core Development, 可見, .Net Core會(huì)根據(jù)當(dāng)前項(xiàng)目環(huán)境, 進(jìn)行加載json文件, 如果有一樣的, 會(huì)覆蓋appsettings.json里面的配置, 也可以理解為優(yōu)先級(jí)的不同, 但是他并不是優(yōu)先級(jí)的不同, 而是進(jìn)行覆蓋
我們還可以舉個(gè)例子, 從控制臺(tái)進(jìn)行參數(shù)配置, 我們進(jìn)入到項(xiàng)目目錄, 運(yùn)行 dotnet runWelcomeMsg="AAA", 然后訪問http://localhost:5000/, 輸出的就是AAA, 所以可以說, 命令行參數(shù)優(yōu)先級(jí)是最高的
講到這里, 相信對(duì)IConfiguration接口和配置信息獲取使用已經(jīng)掌握很大一部分了
到此這篇關(guān)于ASP.Net Core MVC基礎(chǔ)系列之獲取配置信息的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- ASP.Net Core MVC基礎(chǔ)系列之中間件
- ASP.Net Core MVC基礎(chǔ)系列之服務(wù)注冊(cè)和管道
- ASP.Net?Core?MVC基礎(chǔ)系列之項(xiàng)目創(chuàng)建
- asp.net mvc core管道及攔截器的理解
- ASP.NET Core MVC學(xué)習(xí)之視圖組件(View Component)
- ASP.NET Core MVC基礎(chǔ)學(xué)習(xí)之局部視圖(Partial Views)
- ASP.NET Core MVC學(xué)習(xí)教程之路由(Routing)
- ASP.NET Core MVC/WebApi基礎(chǔ)系列2
- ASP.NET Core MVC/WebApi基礎(chǔ)系列1
- ASP.Net?Core?MVC基礎(chǔ)系列之環(huán)境設(shè)置
相關(guān)文章
IIS7 應(yīng)用程序池的 托管管道模式與集成模式小結(jié)
而 IIS 7 完全整合 .NET 之后,架構(gòu)的處理順序有了很大的不同(如下圖),最主要的原因就是 ASP.NET 從 IIS 插件(ISAPI extension)的角色,進(jìn)入了 IIS 核心,而且也能以 ASP.NET 模塊負(fù)責(zé)處理 IIS 7 的諸多類型要求。2011-02-02
一步步打造漂亮的新聞列表(無刷新分頁、內(nèi)容預(yù)覽)第一步
新聞列表是信息管理系統(tǒng)中最常見的,也是最簡(jiǎn)單的,一些簡(jiǎn)單的新聞列表就是一個(gè)table,然后里面循環(huán)寫入數(shù)據(jù)2010-07-07
.Net行為型設(shè)計(jì)模式之職責(zé)鏈模式(Chain of Responsibility)
這篇文章介紹了.Net行為型設(shè)計(jì)模式之職責(zé)鏈模式(Chain of Responsibility),文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05

