首页 > 编程语言 >C# 读取json配置文件appsettings.json

C# 读取json配置文件appsettings.json

时间:2023-08-04 12:12:46浏览次数:46  
标签:GetSection 配置文件 C# appsettings json static var public

添加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 ConcurrentDictionary<string, IConfigurationRoot> ConfigurationCache; public static string ConnectionString { get; set; }
public static string LogPath{ get; set; } public static int LogLevel{ get; set; } static AppConfigurations() { ConfigurationCache = new ConcurrentDictionary<string, IConfigurationRoot>(); 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();
        }

    }

 

标签:GetSection,配置文件,C#,appsettings,json,static,var,public
From: https://www.cnblogs.com/sugarwxx/p/17605542.html

相关文章

  • C++11 同步与互斥
    C++11同步与互斥1.std中的锁1.1锁是实现互斥的方法,在std中实现了多种基本锁如下:std::mutex:最基本的互斥锁,只能在同一线程中进行加锁和解锁操作。std::recursive_mutex:递归互斥锁,允许同一线程多次加锁,但必须在同一线程中解锁相同次数。std::timed_mutex:定时互斥锁,允......
  • 从excel读数据的格式
    问题:从excel中读取的数据应是什么格式呢?   1pytest中需要参数化时,需要的[(valuea,valueb)(valuex,valuey)]-------------列表内是元祖importpytestdefadd(x,y):[email protected]("x,y,expected",[(1,1,2),(2,3,5),......
  • 合合信息通过ISO/IEC国际标准双认证,为全球用户提供高合规标准AI服务
    互联网、AI等技术的全球普及为人们提供便捷服务的同时,也带来了信息安全领域的诸多挑战。保护用户隐私及数据安全,是科技企业规范、健康发展的重心。近期,上海合合信息科技股份有限公司(简称“合合信息”)顺利通过国际权威认证机构DNV审核,获得ISO/IEC27001信息安全管理体系及ISO/IEC2......
  • 【答疑】jsonpath和beanshell配合使用案例
    问题今天提升群小伙伴问了这样一个问题:接口返回如下(list元素个数不确定),需要提取所有的iautoid,然后用逗号拼接起来,如果是如下返回,需要得到的结果是1687283717749342208,1679392630364184576,后续请求需要使用{ "data":{ "firstPage":true, "lastPage":false, "list":......
  • asp.net core之HttpClient
    本文介绍了ASP.NETCore中的HttpClient和HttpClientFactory的作用、用法以及最佳实践。通过示例代码的展示,读者可以了解如何使用HttpClient发送HTTP请求并处理响应,以及如何使用HttpClientFactory来解决HttpClient的一些问题,如资源泄漏和性能问题。同时,本文还强调了HttpClientFacto......
  • dockerfile
      FROMxx.xx.xx.xx:5000/library/submit:v2COPY/usr/local/java/usr/local/javaCOPY/data/request.json/dataCOPY/data/test.pgm/dataCOPY/data/test.yaml/dataCOPY/home/bim/luo/eclipse/output2/Robot_Project3_4.jar/xxxCMD["/bin/sh",&......
  • MySQL中char与varchar的区别:存储机制、性能差异、适用场景
    引用链接:https://www.maoyingdong.com/mysql-char-vs-varchar/ 在MySQL中,varchar和char都可以用来存储字符串。从语义上看,varchar是变长的(Variable-length),char是定长的(Fixed-length)。本文基于MySQL5.7版本,从varchar和char的语义,到存储引擎底层存储机制,探讨它们在存......
  • PHP+Apache服务器+帝国CMS
    win10环境搭建1.简易安装参考菜鸟教程,链接:https://www.runoob.com/php/php-install.html/2.详细安装Apache服务器安装:Apache是C语言实现的,专门用来提供HTTP服务;特性:简单、速度快、性能稳定、可配置(代理)2.1.1、主要用于解析静态文本,并发性能高,侧重于HTTP服务;2.1.2、支......
  • EtherCAT转Modbus网关连接TwinCAT3的配置方法
    捷米JM-ECT-RTU是自主研发的一款ETHERCAT从站功能的通讯网关。该产品主要功能是将ETHERCAT网络和MODBUS-RTU网络连接起来。网关连接到ETHERCAT总线中做为从站使用,连接到MODBUS-RTU总线中做为主站或从站使用。​编辑切换为居中添加图片注释,不超过140字(可选)ETHERC......
  • SIEMENS PLC介绍、西门子S1200系列接线、编程、下载和仿真
    前言  西门西PLC、台达触摸屏、法兰克机床等等多年以前玩得比较多,改造机床、维修机床、给机床编程等等,没事还能扯个零件啥的,之前也没总结过,有时间就重新整理下。  本章后面以西门1200实物为例,下载一个基本程序。PLC  玩得比较多的就是西门PLC,单个模块就是3K起,一个24V电源......