.NET Core自定義配置文件
前文講獲取配置文件內(nèi)容的時候,是獲取默認(rèn)的appsettings.json配置文件的配置,下面說明下如何進(jìn)行自定義配置文件獲取
1. Json Provider
1.1 構(gòu)建獨(dú)立的IConfiguration
編寫方法
public static IConfigurationRoot LoadSettings(this IHostEnvironment env) { return new ConfigurationBuilder() .SetBasePath(AppDomain.CurrentDomain.BaseDirectory) .AddJsonFile("common.json", optional: true, reloadOnChange: false) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: false) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: false) .AddEnvironmentVariables() .Build(); }
在Startup構(gòu)造函數(shù)的時候進(jìn)行賦值替換IConfiguration
private readonly IConfiguration _configuration; public Startup(IWebHostEnvironment env) { _configuration = env.LoadSettings(); }
該操作添加的配置項(xiàng),只在startup范圍生效。
1.2 在Progrom全局自定義配置
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, config) => { var env = hostingContext.HostingEnvironment; config.SetBasePath(env.ContentRootPath); config.AddJsonFile("devappsettings.json", optional: false, reloadOnChange: true); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
注意:添加自定義文件的目錄要注意,可能會存在因?yàn)槟夸泦栴}所以找不到配置文件的情況。
2. Memory Provider
允許我們將一個應(yīng)用程序配置直接配置到內(nèi)存中,而不是像傳統(tǒng)方式那樣子必須制定一個物理文件。
var builder = new ConfigurationBuilder(); var profileCollection = new Dictionary<string, string> { {"AuthorProfile:FirstName", "Joydip"}, {"AuthorProfile:LastName", "Kanjilal"}, {"AuthorProfile:Address", "Hyderabad, India"} }; builder.AddInMemoryCollection(profileCollection); Configuration = builder.Build();
使用
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, config) => { var builder = new ConfigurationBuilder(); var profileCollection = new Dictionary<string, string> { {"AuthorProfile:FirstName", "Joydip"}, {"AuthorProfile:LastName", "Kanjilal"}, {"AuthorProfile:Address", "Hyderabad, India"} }; builder.AddInMemoryCollection(profileCollection); config.AddConfiguration(builder.Build()); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
然后就可以通過IConfiguration實(shí)例去獲取了。
3. 公共類獲取配置文件
引用組件
Microsoft.Extensions.Configuration.Json
public class AppSettings { private static IConfiguration Configuration { get; set; } public AppSettings(IConfiguration configuration) { Configuration = configuration; } /// <summary> /// 封裝要操作的字符 /// </summary> /// <param name="sections"></param> /// <returns></returns> public static string GetValue(params string[] sections) { try { if (sections.Any()) return Configuration[string.Join(":", sections)]; } catch (Exception) { } return ""; } /// <summary> /// 遞歸獲取配置信息數(shù)組 ///引用 Microsoft.Extensions.Configuration.Binder 包 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="sections"></param> /// <returns></returns> public static List<T> App<T>(params string[] sections) { List<T> list = new List<T>(); Configuration.Bind(string.Join(":", sections), list); return list; } }
ConfigureServices中配置
services.AddSingleton(new AppSettings(Configuration));
獲取指定配置
var info = AppSettings.GetValue("Logging", "LogLevel");
到此這篇關(guān)于.NET Core自定義配置文件的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
asp.net 生成靜態(tài)頁時的進(jìn)度條顯示
本文側(cè)重點(diǎn)在講解生成靜態(tài)頁的“進(jìn)度條”,所以將采用模擬的方法。生成靜態(tài)時需要生成的文章必須非常多,否則進(jìn)度條可能一閃而過,看不到效果。2009-05-05DataGridView展開與收縮功能實(shí)現(xiàn)
我們今天將要講到DataGridView之行的展開與收縮,包括功能是如何實(shí)現(xiàn)的,感興趣的小伙伴們可以參考一下2015-09-09ajaxToolkit:ModalPopupExtender演示及實(shí)現(xiàn)代碼
ajaxToolkit:ModalPopupExtender可以讓用戶模擬新開一個窗口,就是在模擬新開窗口作多項(xiàng)選項(xiàng)的功能,感興趣的朋友可以了解下,希望此文對你有所幫助2013-01-01ASP.NET向Javascript傳遞變量兩種實(shí)現(xiàn)方法
ASP.NET向Javascript傳遞變量兩種實(shí)現(xiàn)方法,需要的朋友可以參考下2012-12-12ASP.NET MVC實(shí)現(xiàn)圖片上傳、圖片預(yù)覽顯示
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC實(shí)現(xiàn)圖片上傳、圖片預(yù)覽顯示的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05ASP.NET Core中實(shí)現(xiàn)全局異常攔截的完整步驟
這篇文章主要給大家介紹了關(guān)于ASP.NET Core中如何實(shí)現(xiàn)全局異常攔截的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01linq to sql 中,如何解決多條件查詢問題,答案,用表達(dá)式樹! (下)
在上一篇中,我們做了基于linq to sql 的多條件組合查詢,但通過監(jiān)視數(shù)據(jù)庫發(fā)現(xiàn),這樣做的成本比較高,每次都要取出全部的數(shù)據(jù)到內(nèi)存進(jìn)行篩選.2011-08-08