DotnetCore之旅(3)---配置文件

配置文件概述

程序配置文件一般用于配置程序通用的常量信息,通常包括数据库连接信息,账号设置等信息

dotnetcore默认使用json文件(appsettings.json)作为程序的配置文件。Json文件相对原来的xml文件,文件变小了,而且格式化的情况下Json文件也是很好阅读的。

appsettings.json

 1 {
 2   "ConnectionStrings": {
 3     "SystemDbConnection": "Server=127.0.0.1;DataBase=SystemDb;User Id=sa;password=123456",
 4     "SystemDbConnection_ReadOnly": "Server=127.0.0.1;DataBase=SystemDb;User Id=sa;password=123456"
 5   },
 6   "MarketAccountInfo": {
 7     "AccountId": "8783",
 8     "Appkey": "23786FEE",
 9     "Secretkey": "23786FEE==" 
10   },
11 
12   "AllowedHosts": "*"
13 }

其文件属性默认是不复制的,生成操作为内容,在发布时会复制到发布路径下的。

 配置文件的读取

程序startup类中已经自动加载配置信息 Configuration属性就是

 public IConfiguration Configuration { get; }  

一般当我们在调试程序时,配置文件不会复制到调试的目录,调试程序读取的是程序目录的配置文件(appsetting.json)

读取配置文件的内容也比较简单

 1         /// <summary>
 2         /// 初始化配置信息
 3         /// </summary>
 4         private void InitConfig()
 5         { 
 6             string dbConnectionString = Configuration.GetConnectionString("SystemDbConnection");
 7             string dbReadonlyConnectionString = Configuration["ConnectionStrings:SystemDbConnection_ReadOnly"];
 8             MarketAccount account = Configuration.GetSection("MarketAccountInfo").Get<MarketAccount>();
 9            
10         }

附--MarketAccount类

1     /// <summary>
2     /// 市场账号
3     /// </summary>
4     public class MarketAccount
5     {
6         public string AccountId { get; set; }
7         public string Appkey { get; set; }
8         public string Secretkey { get; set; }
9     }

我们也可以自定义类读取配置文件,作为一个全局通用类。(这时最好将配置文件的属性设为【始终复制】或者【如果较新则复制】,这样在调试时才能读取到配置)

 1 using Microsoft.Extensions.Configuration;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Threading.Tasks;
 6 
 7 namespace NetCoreExample
 8 {
 9     /// <summary>
10     /// 配置设置
11     /// </summary>
12     public class ConfigSetting
13     {
14         private static IConfiguration root = new ConfigurationBuilder().SetBasePath(AppContext.BaseDirectory).AddJsonFile("appsettings.json").Build();
15         /// <summary>
16         /// 获取DB连接字符串
17         /// </summary>
18         /// <param name="name"></param>
19         /// <returns></returns>
20         public static string GetConnectionString(string name)
21         {
22             return root.GetConnectionString(name);
23         }
24         /// <summary>
25         /// 获取账号信息
26         /// </summary>
27         /// <returns></returns>
28         public static MarketAccount GetMarketAccount()
29         {
30             return root.GetSection("MarketAccountInfo").Get<MarketAccount>();
31         }
32        
33     }

在Startup类中加载为程序默认帮忙加载了配置文件,我们可以在其中将配置信息初始化到程序中(例如某个固定类)作为全局信息。

自定义加载不一定加载appsetting.json,而且比较灵活,如非必要,觉得还是在startup中加载比较好。避免多次加载。

当然配置文件也无需一定要经过Configuration进行读取,也可以定义读取,例如直接经过IO读取json文件,在将Json转成对应的实体或者属性。不过这样的代码就比较生硬了。

猜你喜欢

转载自www.cnblogs.com/johnyong/p/10902855.html