C# 读取json配置文件appsettings.json
(资料图片)
添加NuGet包
Microsoft.Extensions.Configuration.FileExtensions;
Microsoft.Extensions.Configuration.Json;
appsettings.json示例
代码:
public static void GetBuilder(string path){ var builder = new ConfigurationBuilder() //设置文件放置路径 .SetBasePath(path) //appsettings.json,复制一份放在程序集目录下 .AddJsonFile(appsettings, optional: true, reloadOnChange: true); var configuration = builder.Build(); var connectionStr = configuration.GetConnectionString("Default")!;//数据库默认字符串的独特方式获取 var num = int.Parse(configuration.GetSection("Log:LogLevel").Value!);//方式一,通过":"来表示层级获取数据 var str = configuration.GetSection("Log").GetSection("LogPath").Value!;//方式二,直接通过叠加使用GetSection()来表示层级获取数据
}
完整示例
public static class AppConfigurations{ private const string appsettings = "appsettings.json"; public static readonly ConcurrentDictionaryConfigurationCache; public static string ConnectionString { get; set; } public static string LogPath{ get; set; } public static int LogLevel{ get; set; } static AppConfigurations() { ConfigurationCache = new ConcurrentDictionary (); ConnectionString = Get(Directory.GetCurrentDirectory()).GetConnectionString("Default")!; LogLevel= int.Parse(Get(Directory.GetCurrentDirectory()).GetSection("Log:LogLevel").Value!);LogPath= Get(Directory.GetCurrentDirectory()).GetSection("Log").GetSection("LogPath").Value!;
} public static IConfigurationRoot Get(string path) { var cacheKey = path; return ConfigurationCache.GetOrAdd( cacheKey, _ => GetBuilder(path) ); } public static IConfigurationRoot GetBuilder(string path) { var builder = new ConfigurationBuilder() //设置文件放置路径 .SetBasePath(path) //appsettings.json,复制一份放在程序集目录下 .AddJsonFile(appsettings, optional: true, reloadOnChange: true); return builder.Build(); } }
注:运行时始终读不到配置抛出异常
原因是:配置文件没有复制成功到程序集目录下,没有成功的原因是配置文件的属性"复制到输出目录"值是不复制,此属性的值应改为,始终复制或者如果较新则复制,此处选择的是如果较新则复制(源文件有更新则重新复制)
关键词:
责任编辑:宋璟
-
C# 读取json配置文件appsettings.json
-
四天三夜:Z180次列车乘客走出安家庄
-
江苏兴化:聚链成群集群成势,全力提升核心竞争力
-
马斯克宣布 X(推特)Blue 订阅者新权益:可直接下载视频
-
存在安全隐患!特斯拉召回271辆,涉及这些车型
-
河北转移群众超过120万人!防汛最新信息汇总
-
8月4日西乌珠穆沁旗金田氢氟酸价格暂稳
-
京能热力向股东定增募不超4.26亿获通过 光大证券建功
-
汽车拐弯方向盘怎么打 汽车拐弯方向盘打几圈
-
知名制片人邓细斌突发心梗去世 作品正在热播
-
8月“十大金股” 谁最受关注?
-
司南导航:网上发行中签率为0.04816025%
-
《幻塔》ps5什么时候上线?ps5价格及发售时间一览
-
本田4S店:新冠道8月8日上市!预计22.48万起售
-
东岳硅材:公司获批广期所工业硅指定交割厂库
-
2023年保山市教育成绩再创新高
-
上海研发生产的一款硬性巩膜接触镜创新产品获批上市
-
中国电竞产业研究院专家魏冉:亚运之后期待电竞上广东全运会
-
收评:指数午后拉升创业板涨1% CRO概念股领涨
-
机情问答:OPPO K11性价比高吗?酷比平板质量如何?
-
百度宣布调拨3000万支援抗汛救灾
-
恒辉安防(300952.SZ):新材料上半年对外销售225吨
-
5G 广播电视试验(成都)正式启动
-
万辰生物(300972)8月2日主力资金净买入624.55万元
-
利空接踵而至 美股科技股涨势踩下“急刹车”
-
一场洪水800年历史长桥被冲毁 800多年卢沟桥暴雨后安然无恙 基本情况讲解
-
政银协同 助化隆拉面“走”向全国
-
智能手机释放积极信号
-
多所高校相继发声:汛情受灾学生可申请补助
-
“先紧着旅客吃”,三趟受阻列车紧急救援记
-
柏诚股份获5家机构调研:公司具备实施ISO Class2.5高等级洁净室项目的能力和项目经验(附调研问答)
-
奥瑞金(002701):8月2日北向资金减持18.69万股
-
都体:如果克鲁尼奇要求被出售,米兰将追求博洛尼亚中场多明戈斯
-
原创音乐剧《国之韶华》首演
-
中国队在成都大运会男女混合4×100米混合泳接力赛夺冠