在.NET Framework框架时代我们的应用配置内容一般都是写在Web.config或者App.config文件中,读取这两个配置文件只需要引用System.Configuration程序集,分别用

  1. System.Configuration.ConfigurationManager.AppSettings["SystemName"];//读取appSettings配置
  2. System.Configuration.ConfigurationManager.ConnectionStrings["DBConnectionStr"];//读取connectionStrings配置

读取配置文件和数据库链接。

  

  现在我们终于迎来.NET Core时代,越来越多的应用被迁移至.NET Core框架下,.NET Core2.0发布以后,.NET Core更加成熟了,原本在.NET Framework框才有的类库.NET Core也基本全部实现,并有增强。因此小菜我也已经准备好加入.NET Core大军中,所以小菜我最近开始修炼.NET Core大法。

  

  欲铸剑,必先打铁,我要一步步来,读取配置文件是一个应用中必不可少的,先弄清怎么读取配置文件,.NET Core配置文件为appsettings.json,为了满足在各个不同类中都能便捷的读取appsettings.json中的配置,所以我需要将读取appsettings.json封装到类库中。在Startup中读取就不说了,在类库中实现读取怎么玩儿?直接上代码,appsettings.json文件内容如下:

  1. {
  2. "Logging": {
  3. "IncludeScopes": false,
  4. "LogLevel": {
  5. "Default": "Warning"
  6. }
  7. },
  8. "ConnectionStrings": {
  9. "CxyOrder": "Server=LAPTOP-AQUL6MDE\\MSSQLSERVERS;Database=CxyOrder;User ID=sa;Password=123456;Trusted_Connection=False;"
  10. },
  11. "Appsettings": {
  12. "SystemName": "PDF .NET CORE",
  13. "Date": "2017-07-23",
  14. "Author": "PDF"
  15. },
  16. "ServiceUrl": "https://www.baidu.com/getnews"
  17. }

建一个项目名称为NetCoreOrder.Common的类库项目,并给该类库项目引入 Microsoft.Extensions.Configuration 和 Microsoft.Extensions.Configuration.Json程序包,类库中加载appsettings.json配置文件代码如下:

  1. using Microsoft.Extensions.Configuration;
  2. using Microsoft.Extensions.Configuration.Json;
  3.  
  4. namespace NetCore.Common
  5. {
  6. /// <summary>
  7. /// 读取配置文件
  8. /// </summary>
  9. public class AppConfigurtaionServices
  10. {
  11. public static IConfiguration Configuration { get; set; }
  12. static AppConfigurtaionServices()
  13. {
  14. //ReloadOnChange = true 当appsettings.json被修改时重新加载
  15. Configuration = new ConfigurationBuilder()
  16. .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })
  17. .Build();
  18. }
  19.  
  20. /// <summary>
  21. /// 通过强类型绑定读取配置
  22. /// </summary>
  23. /// <typeparam name="Entity">要绑定的类型</typeparam>
  24. /// <param name="keyPath">配置文件路径</param>
  25. /// <returns>绑定的类</returns>
  26. public static Entity GetSectionObject<Entity>(string keyPath = null) where Entity : new()
  27. {
  28. var entity = new Entity();
  29. if (string.IsNullOrEmpty(keyPath))
  30. {
  31. //将appsettings.json全部配置绑定到模型
  32. Configuration.Bind(entity);
  33. }
  34. else
  35. {
  36. //将指定路径下的配置项绑定到模型
  37. var section = Configuration.GetSection(keyPath);
  38. section.Bind(entity);
  39. }
  40. return entity;
  41. }
  42. }
  43. }

A.读取配置文件的代码完成了,只要引用了NetCoreOrder.Common类库的项目中都能方便读取数据库链接字符串和其他配置,使用方法如下:

  1. AppConfigurtaionServices.Configuration.GetConnectionString("CxyOrder");
  2. //得到 Server=LAPTOP-AQUL6MDE\\MSSQLSERVERS;Database=CxyOrder;User ID=sa;Password=123456;Trusted_Connection=False;

读取一级配置节点配置

  1. AppConfigurtaionServices.Configuration["ServiceUrl"];
  2. //得到 https://www.baidu.com/getnews

读取二级子节点配置

  1. AppConfigurtaionServices.Configuration["Appsettings:SystemName"];
  2. //得到 PDF .NET CORE
  3. AppConfigurtaionServices.Configuration["Appsettings:Author"];
  4. //得到 PDF

B.通过强类型读取Appsettings节点的配置值

增加模型类

  1. public class Appsettings
  2. {
  3.   public string SystemName { get; set; }
  4.   public DateTime Date { get; set; }
  5.   public string Author { get; set; }
  6. }
  7.  
  8. public class ConnectionStrings
  9. {
  10.   public string CxyOrder { get; set; }
  11. }
  12.  
  13. public class AppsettingConfig
  14. {
  15.   public ConnectionStrings ConnectionStrings { get; set; }
  16.  
  17.   public Appsettings Appsettings { get; set; }
  18.  
  19.   public string ServiceUrl { get; set; }
  20. }

强类型读取配置值

  1. using Microsoft.AspNetCore.Mvc;
  2. using NetCore.Common;
  3. using System;
  4.  
  5. namespace NetCore.Controllers
  6. {
  7. [ApiController]
  8. [Route("/")]
  9. public class HelloNetCoreController : ControllerBase
  10. {
  11.  
  12. [HttpGet("/getconfig")]
  13. public ActionResult GetConfig()
  14. {
  15. //读取Appsettings节点配置
  16. var config = AppConfigurtaionServices.GetSectionObject<Appsettings>("Appsettings");
  17. return new JsonResult(config);
  18. //返回:{"systemName":"PDF .NET CORE","date":"2017-07-23T00:00:00","author":"PDF"}
  19. }
  20.  
  21. [HttpGet("/getAllConfig")]
  22. public ActionResult GetAllConfig()
  23. {
  24. //读取整个配置文件的配置
  25. var config = AppConfigurtaionServices.GetSectionObject<AppsettingConfig>();
  26. return new JsonResult(config);
  27. //返回:{"connectionStrings":{"cxyOrder":"Server=LAPTOP-AQUL6MDE\\MSSQLSERVERS;Database=CxyOrder;User ID=sa;Password=123456;Trusted_Connection=False;"},"appsettings":{"systemName":"PDF .NET CORE","date":"2017-07-23T00:00:00","author":"PDF"},"serviceUrl":"https://www.baidu.com/getnews"}
  28. }
  29. }
  30. }

  注意,如果AppConfigurtaionServices类中抛出FileNotFoundException异常,说明目录下未找到appsettings.json文件,这时请在项目appsettings.json文件上右键——属性——将“复制到输出目录”项的值改为“始终复制”即可。

小菜笔记,若有不妥,望指正!

.NET Core在类库中读取配置文件appsettings.json的更多相关文章

  1. .Net core 在类库中获取配置文件Appsettings中的值

    大多数情况,我们开发的程序中都含有很多个类库和文件夹,有时候,我们会遇到程序中的类库需要获取配置文件的信息的情况. 像dapper 中需要使用连接字符串的时候,那么我们一直从主程序中传值这是个不好的方 ...

  2. .NET Core类库中读取配置文件

    最近在开发基于.NET Core的NuGet包,遇到一个问题:.NET Core中已经没有ConfigurationManager类,在类库中无法像.NET Framework那样读取App.conf ...

  3. ASP.NET Core实现类库项目读取配置文件

    前言 之前继续在学习多线程方面的知识,忽然这两天看到博问中有个园友问到如何在.net core类库中读取配置文件,当时一下蒙了,这个提的多好,我居然不知道,于是这两天了解了相关内容才有此篇博客的出现, ...

  4. IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题

    IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...

  5. asp.net core mvc 读取配置文件appsettings.json

    上一篇我们将了读取自定义配置文件.这篇我们讲一下asp.net core mvc里读取自带的配置文件 appsettings.json 首先创建个asp.net core mvc项目,项目里有Prog ...

  6. .Net Core 读取配置文件 appsettings.json

    1. 首先些一个类 public class MySettings { public string P1 { get; set; } public string P2 { get; set; } } ...

  7. 读取配置文件,appsettings.json和注入ICO

    https://www.cnblogs.com/knowledgesea/p/7079880.html 引入Nuget的两个类库 Microsoft.Extensions.Configuration ...

  8. NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json

    一.简介 1.读取配置文件是开发过程中使用非常频繁的操作.属称”不能写死“ 二.NetCore读取配置文件 1.新建一个静态公共变量,属称单例. 2.在程序Startup启动时,将系统变量传递给单例. ...

  9. ASP.NET CORE MVC 2.0 如何在Filter中使用依赖注入来读取AppSettings,及.NET Core控制台项目中读取AppSettings

    问: ASP.NET CORE MVC 如何在Filter中使用依赖注入来读取AppSettings 答: Dependency injection is possible in filters as ...

随机推荐

  1. OneAPM大讲堂 | 谁更快?JavaScript 框架性能评测

    文章系国内领先的 ITOM 管理平台供应商 OneAPM 编译呈现. 网页性能是一个丰富且又复杂的话题.在本帖中,我们会将讨论的范围局限在前端 JavaScript 框架上,探究相对于另外一种框架而言 ...

  2. Scrapy爬虫入门

    1.安装Scrapy 打开Anaconda Prompt,执行:pip install Scrapy执行安装! 注意:要是安装过程中抛出: error: Microsoft Visual C++ 14 ...

  3. ASP.NET MVC从请求到响应发生了什么

    *过程描述 当浏览器发出一个http请求后,该请求被UrlRoutingModule截获,UrlRoutingModule根据请求上下文去系统路由表(RouteTable)中匹配,从中获取一个Rout ...

  4. 洗礼灵魂,修炼python(22)--自定义函数(3)—函数作用域,闭包

    前面你看到嵌套两层的函数,也许你有感而发,想来点刺激的对不?那么如果每层内的变量名如果相同会怎样?拿个例子看下就知道: 报错了,报错信息大意是,本地变量‘num’引用前没有被赋值定义.这咋回事,我外层 ...

  5. word中从正文开始编码的方法

    假如第1页和第2页是首页和目录,你想从第3页的正文开始设置页码 1. 将光标移到第二页的最后位置,点击插入“分隔符”,选择“分节类型”的“下一页”,确定.这时光标自动移到第三页. 2. 点击插入页码, ...

  6. 利用RSACryptoServiceProvider进行RSA加密解密

    前言: 本文只介绍How to use,对于加密算法的研究不予讨论. 关于私钥的存储,微软给的建议是使用windows自带的秘钥容器,相见文档. 为了直观看到私钥和公钥,本文直接将其存入XML文件中. ...

  7. 使用LogPhoneUtil工具类在Android手机保存APP运行日志

    最近公司的测试老是提出这样那样的bug,当然也怪自己代码写的烂,所以测试总是会把app搞崩溃,而他们那边崩溃的时候还没有日志打印,自己回来再重现有的时候还真不好复现出来,因此麻烦事就来了.为了方便查看 ...

  8. 峰值QPS/QPS/PV/UV/服务器数量/并发数/吐吞量/响应时间计算公式

    QPS:每秒查询率(Query Per Second) ,每秒的响应请求数,也即是最大吞吐能力.QPS = req/sec = 请求数/秒QPS统计方式 [一般使用 http_load 进行统计]QP ...

  9. Windows:Oracle 11g 备份脚本

    @echo off echo ================================================ echo Windows环境下Oracle数据库的自动备份脚本 echo ...

  10. Scrapy运行流程

    接下来的图表展现了Scrapy的架构,包括组件及在系统中发生的数据流的概览(绿色箭头所示). 下面对每个组件都做了简单介绍,并给出了详细内容的链接.数据流如下所描述. 来源于https://scrap ...