.NET Core自定義配置文件
前文講獲取配置文件內容的時候,是獲取默認的appsettings.json配置文件的配置,下面說明下如何進行自定義配置文件獲取
1. Json Provider
1.1 構建獨立的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構造函數(shù)的時候進行賦值替換IConfiguration
private readonly IConfiguration _configuration;
public Startup(IWebHostEnvironment env)
{
_configuration = env.LoadSettings();
}該操作添加的配置項,只在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>();
});注意:添加自定義文件的目錄要注意,可能會存在因為目錄問題所以找不到配置文件的情況。
2. Memory Provider
允許我們將一個應用程序配置直接配置到內存中,而不是像傳統(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實例去獲取了。
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");到此這篇關于.NET Core自定義配置文件的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
ScriptManager.RegisterStartupScript()方法在ajax頁面無效的解決方法
ScriptManager.RegisterStartupScript()方法在ajax頁面無效的解決方法2010-03-03
基于ABP框架實現(xiàn)數(shù)據(jù)字典開發(fā)
本文詳細講解了基于ABP框架實現(xiàn)數(shù)據(jù)字典開發(fā),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
ASP.NET 恢復備份Sqlserver實現(xiàn)代碼
在線恢復和備份SQL Server的代碼,需要的朋友可以參考下。2010-04-04
.NET中RDLC循環(huán)處理數(shù)據(jù)的應用分析
本篇文章介紹了,.NET中RDLC循環(huán)處理數(shù)據(jù)的應用分析。需要的朋友參考下2013-05-05

