Visual Studio 2022中C# Web API的appsettings.json配置与读取指引
在ASP.NET Core Web API中配置和读取appsettings.json密钥
一、配置密钥到appsettings.json
打开项目根目录下的appsettings.json(若不存在则新建),用JSON格式添加键值对,支持直接根节点配置或分组管理:
{ // 直接根节点配置简单密钥 "Key1": "SomeInfo", // 分组管理多个相关配置项 "MySettings": { "ApiKey": "YourSecretApiKey", "DbConnectionString": "Server=localhost;Database=MyDb;Trusted_Connection=True;" } }
二、读取密钥的两种常用方式
方式1:通过IConfiguration依赖注入读取(快速灵活)
ASP.NET Core默认已注册IConfiguration服务,直接在控制器/服务类中注入即可:
using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; [ApiController] [Route("api/[controller]")] public class ConfigController : ControllerBase { private readonly IConfiguration _config; // 构造函数注入IConfiguration public ConfigController(IConfiguration config) { _config = config; } [HttpGet] public IActionResult GetKeys() { // 读取根节点的Key1 string key1 = _config["Key1"]; // 读取分组内的配置,用冒号分隔层级 string apiKey = _config["MySettings:ApiKey"]; string dbConnStr = _config["MySettings:DbConnectionString"]; return Ok(new { Key1 = key1, ApiKey = apiKey, DbConnection = dbConnStr }); } }
方式2:绑定到强类型类(适合复杂配置,易维护)
如果配置项较多,推荐将配置绑定到自定义类,避免硬编码字符串键:
- 创建配置类:
public class MySettings { public string ApiKey { get; set; } public string DbConnectionString { get; set; } }
- 在Program.cs中注册配置绑定:
var builder = WebApplication.CreateBuilder(args); // 将MySettings节点绑定到MySettings类 builder.Services.Configure<MySettings>(builder.Configuration.GetSection("MySettings")); // 添加控制器服务 builder.Services.AddControllers(); var app = builder.Build(); // 中间件配置(如路由、授权等) app.UseRouting(); app.MapControllers(); app.Run();
- 在控制器中注入
IOptions<MySettings>读取:
using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; [ApiController] [Route("api/[controller]")] public class ConfigController : ControllerBase { private readonly MySettings _mySettings; public ConfigController(IOptions<MySettings> mySettings) { _mySettings = mySettings.Value; } [HttpGet] public IActionResult GetSettings() { string apiKey = _mySettings.ApiKey; string dbConnStr = _mySettings.DbConnectionString; return Ok(new { ApiKey = apiKey, DbConnection = dbConnStr }); } }
注意事项
- 敏感密钥(如API密钥、数据库密码)不要直接写入appsettings.json,建议使用用户机密(右键项目→管理用户机密)或环境变量,防止泄露到代码仓库。
- appsettings.json支持环境区分,比如
appsettings.Development.json用于开发环境,appsettings.Production.json用于生产环境,运行时会自动合并配置。
内容的提问来源于stack exchange,提问作者Ann
相关产品推荐
相关产品推荐

