一. 各种文件的读取

1.说明

  在.Net Core中,各种配置文件的读取都需要依赖【Microsoft.Extensions.Configuration】程序集,当然在Asp.Net Core中已经内置了,然后通过依赖注入IConfiguration configuration对象进行配置文件的相关操作。

比如在控制器注入该对象:

第十节:Asp.Net Core 配置详解和选项模式

相关约定:

①:配置键不区分大小写,例如,ConnectionString 和 connectionstring 被视为等效键。

②:在配置API中,冒号分隔符(:)适用于所有平台。

③:配置值是字符串

④:NULL值不能存储在配置中或绑定到对象。

 注:

  在Core MVC中,默认识别appsettings.json 文件,如果要添加其它类型的文件,需要通过AddJson、AddXml、AddIniFile、AddInMemoryCollection等方法手动添加进入, 方便起见通过 config.SetBasePath(Directory.GetCurrentDirectory());将当前目录设置为基础目录。

   这些AddXX方法,可以配置后面两个参数均为true,eg:config.AddJsonFile("Config/ypf1.json", optional: true, reloadOnChange: true);这样的话当配置文件发生变化的时候,会自动更新加载,而不必重启整个项目。

项目结构:手动新增的配置文件都在Config文件夹下(如下图),然后都在Program类中进行加载进来(代码如下)

第十节:Asp.Net Core 配置详解和选项模式

 1  public class Program
 2     {
 3         public static readonly Dictionary<string, string> _dict = new Dictionary<string, string>
 4         {
 5             {"MKey1", "value1"},
 6             {"MKey2", "value2"}
 7         };
 8 
 9         public static void Main(string[] args)
10         {
11             CreateWebHostBuilder(args).Build().Run();
12         }
13 
14         public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
15             WebHost.CreateDefaultBuilder(args)
16                 //配置相关
17                 .ConfigureAppConfiguration((hostingContext, config) =>
18                 {
19                     //1. 设置当前目录为基础目录(后面则可以用相对路径)
20                     config.SetBasePath(Directory.GetCurrentDirectory());
21                     //2. 加载json文件 (配置后面两个参数为true,当配置文件发生变化的时候,会自动更新加载,而不必重启整个项目)
22                     config.AddJsonFile("Config/ypf1.json", optional: true, reloadOnChange: true);
23                     //3. 加载xml文件
24                     config.AddXmlFile("Config/ypf2.xml");
25                     config.AddXmlFile("Config/ypf3.xml");
26                     //4. 加载ini文件
27                     config.AddIniFile("Config/ypf4.ini");
28                     //5. 加载内存文件
29                     config.AddInMemoryCollection(_dict);
30                 })
31                 .UseStartup<Startup>();
32     }

2. Json文件的读取

(1).读取规则:

A:普通对象直接通过键名来读取; B:对象中套对象通过多个键名(中间通过:连接)来读取;C: 数组对象则可以 键名:0(或1 或2)的方式来读取。

(2).实战演练:

① 项目默认的appsettings.json的读取,

 1 {
 2   "Logging": {
 3     "LogLevel": {
 4       "Default": "Warning"
 5     }
 6   },
 7   "AllowedHosts": "*",
 8   //下面自定义一些值,用于测试配置文件的读取
 9   "MyFullName": "Maru Li",
10   "User": {
11     "userName": "ypf",
12     "userAge": 15,
13     "Child": {
14       "childName": "ydb",
15       "age": 12
16     }
17   },
18   "StudentList": [
19     {
20       "sName": "qdkjdx"
21     },
22     {
23       "sName": "bjdx"
24     }
25   ],
26   //测试绑定类
27   "starship": {
28     "name": "USS Enterprise",
29     "registry": "NCC-1701",
30     "class": "Constitution",
31     "length": 304.8,
32     "commissioned": false
33   },
34   //测试绑定数组
35   "myArray": ["001","002","003"],
36   "json_array": {
37     "key": "valueA",
38     "subsection": [
39       "valueB",
40       "valueC",
41       "valueD"
42     ]
43   }
44 
45 
46 
47 }
View Code

相关文章: