首页 > 其他分享 >读取appsettings.json

读取appsettings.json

时间:2023-01-11 07:55:23浏览次数:45  
标签:configRoot 读取 appsettings Redis json configBuilder public string

先给出appsettings.json的参考结构,将以读取redis节点数据为例

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  //Redis服务配置
  "Redis": {
    "Default": {
      "Connection": "127.0.0.1:6379",
      "InstanceName": "local",
      "DefaultDB": 0
    }
  }
}

 

方法1:供Program.cs调用

string connection = "";
IConfigurationBuilder configBuilder = new ConfigurationBuilder();
configBuilder.AddJsonFile("appsettings.json");
IConfigurationRoot configRoot = configBuilder.Build();
connection = configRoot.GetSection("Redis:Default:Connection").Value;
Redis.RedisInit.RedisInitialization(Redis.RedisInit.RedisClientType.CSRedisCore,$"{connection},defaultDatabase=0,idleTimeout=3000,poolsize=5,prefix=");
builder.Services.AddSingleton<Redis.IRedisAccess, Redis.CSRedisAccess>();

方法2:供Program.cs调用,包装成对象

namespace CSRedisCoreDemo
{
    public class DBConfig
    {
        public string Connection { get; set; }
        public string InstanceName { get; set; }
        public int DefaultDB { get; set; }
    }
}
string connection = "";
IConfigurationBuilder configBuilder = new ConfigurationBuilder();
configBuilder.AddJsonFile("appsettings.json");
IConfigurationRoot configRoot = configBuilder.Build();
DBConfig? db = configRoot.GetSection("Redis:Default").Get<DBConfig>();
connection = db?.Connection ?? "";
Redis.RedisInit.RedisInitialization(Redis.RedisInit.RedisClientType.CSRedisCore,$"{connection},defaultDatabase=0,idleTimeout=3000,poolsize=5,prefix=");
builder.Services.AddSingleton<Redis.IRedisAccess, Redis.CSRedisAccess>();

方法3:供控制器调用,部分包装成对象,仅能访问指定配置节

namespace CSRedisCoreDemo
{
    public class DBConfig
    {
        public string Connection { get; set; }
        public string InstanceName { get; set; }
        public int DefaultDB { get; set; }
    }
}
namespace CSRedisCoreDemo
{
    public class Log
    {
        public string Default { get; set; }
    }
}
IConfigurationBuilder configBuilder = new ConfigurationBuilder();
configBuilder.AddJsonFile("appsettings.json");
IConfigurationRoot configRoot = configBuilder.Build();
builder.Services.Configure<DBConfig>(configRoot.GetSection("Redis:Default"))
                .Configure<Log>(configRoot.GetSection("Logging:LogLevel"));
    [ApiController]
    [Route("[controller]")]
    public class StringController : ControllerBase
    {
        private IOptions<DBConfig> _options;
        private IOptions<Log> _optionslog;
        public StringController(IOptions<DBConfig> options, IOptions<Log> optionslog)
        {
            _options = options;
            _optionslog = optionslog;
        }
        [Route("/test")]
        [HttpGet()]
        public void Test()
        {
            Console.WriteLine($"{_options.Value.Connection},{_optionslog.Value.Default}");
            
        }
}

方法3:供控制器调用,提供所有配置节,不包装成对象

string connection = "";
IConfigurationBuilder configBuilder = new ConfigurationBuilder();
configBuilder.AddJsonFile("appsettings.json");
IConfigurationRoot configRoot = configBuilder.Build();
builder.Services.AddSingleton(configRoot);
    [ApiController]
    [Route("[controller]")]
    public class StringController : ControllerBase
    {
        private readonly IConfigurationRoot _settings;//配置文件注入
        public StringController(IConfigurationRoot settings,)
        {
            _settings = settings;
        }
        [Route("/test")]
        [HttpGet()]
        public void Test()
        {
            //获取配置文件信息
            Console.WriteLine($"{_settings.GetSection("AllowedHosts").Value}");
        }
}

 配置文件不仅有json格式,还有命令行格式和系统变量等形式,分别对应不同的应用场景。

切勿将配置文件上传到GitHub,以免泄露数据造成损失。之前有丢失开房信息、机密信息等案例。

标签:configRoot,读取,appsettings,Redis,json,configBuilder,public,string
From: https://www.cnblogs.com/tudou365/p/17042734.html

相关文章