網站首頁 編程語言 正文
前文講獲取配置文件內容的時候,是獲取默認的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構造函數的時候進行賦值替換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
允許我們將一個應用程序配置直接配置到內存中,而不是像傳統方式那樣子必須制定一個物理文件。
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>
/// 遞歸獲取配置信息數組
///引用 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");
原文鏈接:https://www.cnblogs.com/azrng/p/14735960.html
相關推薦
- 2022-04-18 Taro中設置 tabbar上的徽章。
- 2022-06-02 Nginx虛擬主機的配置步驟過程全解_nginx
- 2023-01-17 SqlServer事務語法及使用方法詳解_MsSql
- 2022-12-30 React代碼分割的實現方法介紹_React
- 2022-10-02 關于react?useState更新異步問題_React
- 2022-03-21 C語言版約瑟夫問題算法實現_C 語言
- 2022-07-09 Docker可視化、數據持久化
- 2023-07-09 qsort(),sort()排序函數
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支