ASP.Net?Core?MVC基礎(chǔ)系列之獲取配置信息
這一節(jié), 我們來(lái)講解.Net Core 是怎么獲取配置信息的.
.Net Core配置信息來(lái)源主要有以下幾種
- 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)目中來(lái), 至于為什么會(huì)默認(rèn)加載, 我們可以通過(guò)源碼進(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是開(kāi)發(fā)配置. 我們可以做個(gè)試驗(yàn)
我們新建的空MVC項(xiàng)目, 運(yùn)行默認(rèn)訪(fǎng)問(wèn)只會(huì)輸出一句Hello World! , 這是代碼默認(rèn)的, 如圖
現(xiàn)在我們把這個(gè)字符串配置到 json 文件中試試
打開(kāi)appsettings.json, 添加一個(gè)配置, 如圖
我配置了一個(gè)新的歡迎語(yǔ), 然后去取這個(gè)值, 取值需要注入一個(gè)IConfiguration接口對(duì)象, 才能去獲取配置信息, 我們?cè)赟tartup類(lèi)里面的Configure方法的參數(shù)進(jìn)行注入, 注入之后進(jìn)行取值, 修改默認(rèn)輸出的Hello World!, 代碼如圖
然后F5運(yùn)行, 可以看到網(wǎng)頁(yè)上輸出Hello .Net Core, 沒(méi)有問(wèn)題. 那么接下來(lái)我們?cè)赼ppsettings.Development.json里面配置一個(gè)相同的配置項(xiàng), 把值改一下, 如圖
然后再F5運(yùn)行項(xiàng)目, 網(wǎng)頁(yè)就輸出Hello .Net Core Development, 可見(jiàn), .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", 然后訪(fǎng)問(wèn)http://localhost:5000/, 輸出的就是AAA, 所以可以說(shuō), 命令行參數(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)文章
asp.net下SQLite(輕量級(jí)最佳數(shù)據(jù)庫(kù)) 原理分析和開(kāi)發(fā)應(yīng)用
SQLite是一個(gè)開(kāi)源的嵌入式關(guān)系數(shù)據(jù)庫(kù),它在2000年由D. Richard Hipp發(fā)布,它的減少應(yīng)用程序管理數(shù)據(jù)的開(kāi)銷(xiāo),SQLite可移植性好,很容易使用,很小,高效而且可靠2011-10-10.Net行為型設(shè)計(jì)模式之訪(fǎng)問(wèn)者模式(Visitor)
這篇文章介紹了.Net行為型設(shè)計(jì)模式之訪(fǎng)問(wèn)者模式(Visitor),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05ASP.NET Core開(kāi)發(fā)Docker部署
這篇文章介紹了ASP.NET Core開(kāi)發(fā)Docker部署的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12詳解ABP框架中領(lǐng)域?qū)拥念I(lǐng)域事件Domain events
ABP是基于ASP.NET框架之上的Web開(kāi)發(fā)框架(GitHub:https://github.com/aspnetboilerplate),這篇我們來(lái)詳解ABP框架中領(lǐng)域?qū)拥念I(lǐng)域事件Domain events,需要的朋友可以參考下2016-06-06ASP.NET web.config 配置節(jié)點(diǎn)詳解
這篇文章主要介紹了ASP.NET web.config 節(jié)點(diǎn)的配置,講解的非常詳細(xì),需要的朋友可以參考下。2016-06-06asp.net平臺(tái)下C#實(shí)現(xiàn)Socket通信
這篇文章介紹了asp.net平臺(tái)下C#實(shí)現(xiàn)Socket通信的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01