You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:绑定到强类型类(适合复杂配置,易维护)

如果配置项较多,推荐将配置绑定到自定义类,避免硬编码字符串键:

  1. 创建配置类:
public class MySettings
{
    public string ApiKey { get; set; }
    public string DbConnectionString { get; set; }
}
  1. 在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();
  1. 在控制器中注入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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 00:26:09