读取appsettings.json
先给出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,以免泄露数据造成损失。之前有丢失开房信息、机密信息等案例。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异