.Net Core 3.x Api开发笔记 — 读取配置文件信息(四)

  • A+
所属分类:.NET技术
摘要

上节演示Autofac使用,连接:.Net Core 3.x Api开发笔记 — IOC,使用Autofac实现依赖注入(三) 

上节演示Autofac使用,连接:.Net Core 3.x Api开发笔记 -- IOC,使用Autofac实现依赖注入(三) 

本节演示如何读取应用配置信息,也就是读取 appsettings.json 文件中的配置信息

本节通过读取数据库配置文件做完演示:

第1步:在 appsettings.json 添加数据库配置文件

1   //数据库连接字符串 2   "DBConfig": { 3     "DBType": "Mysql", //mysql、mssql、oracle 4     "DBConnectionString": "Data Source=localhost;Database=MyShop;User Id=root;Password=123456;CharSet=utf8;port=3306", //mysql连接字符串 5     "DBTimeout": 180, //180s  单位秒 6     "RedisConnectionString": "127.0.0.1:6379,password=123456,abortConnect=false" //redis连接字符串 7   }

第2步:新建一个类:DBConfig,用于存放上述配置文件内容

    public class DBConfig     {         /// <summary>         /// 数据库类型  mysql、mssql、oracle         /// </summary>         public string DBType { get; set; }         /// <summary>         /// 链接字符串         /// </summary>         public string DBConnectionString { get; set; }         /// <summary>         /// 链接超时时间         /// </summary>         public string DBTimeout { get; set; }         /// <summary>         /// redis链接字符串         /// </summary>         public string RedisConnectionString { get; set; }      }       //全局配置     public class SystemContext     {         /// <summary>         /// 读取数据库配置文件         /// </summary>         public static DBConfig dbConfig { get; set; }      }

第三步:在 Startup 文件中初始化配置文件内容

 1         public void ConfigureServices(IServiceCollection services)  2         {  3             services.AddControllers();  4   5             //方式1  6             //读取配置文件appsettings.json,将自定义节点绑定到DBConfig类中,在任意地方直接使用  7             //配置文件更新,绑定的值不会实时更新  8             SystemContext.dbConfig = Configuration.GetSection("DBConfig").Get<DBConfig>();  9  10             //方式2  11             //将DBConfig对象注册到Service中,这样可以在Controller中注入使用 12             //配置文件更新,绑定的值会实时更新 13             services.Configure<DBConfig>(Configuration.GetSection("DBConfig")); 14         }

上边有两种配置方式,可以任选一种,方式1不会实时更新配置文件内容,方式2会实时更新配置文件内容,根据业务需求自由选择

第四步:在应用中使用

 1         private readonly IOptionsSnapshot<DBConfig> dbConfig;   //通过注入方式读取配置文件  2   3         public UserController(IOptionsSnapshot<DBConfig> _dbConfig)  4         {  5             dbConfig = _dbConfig;  6         }  7   8         [HttpGet]  9         public async Task<IActionResult> GetConfig() 10         { 11             var result = await Task.Run(() => 12             { 13                 //方式1 读取配置文件  不会实施更新内容 14                 var dbType = SystemContext.dbConfig.DBType.ToLower(); 15                 return dbType; 16             }); 17  18             //方式2 读取配置文件  可以实施更新内容 19             var result2 = dbConfig.Value.DBType.ToLower(); 20  21             return Ok("方式1:" + result + ",方式2:" + result2); 22         }

最后测试结果显示,方式2 会跟随配置文件内容的变更实时更新,而方式1没有变化!

.Net Core 3.x Api开发笔记 -- 读取配置文件信息(四)