ASP.NET Core 2.1中如何创建多个AppSetting.json文件?
刚从.NET转到ASP.NET Core 2.1,肯定会怀念以前按环境拆分web.config的便利吧?别担心,ASP.NET Core里有对应的实现——环境特定的appsettings.json文件,完全能满足你的需求,下面一步步给你讲清楚:
1. 创建环境专属的配置文件
首先在你的项目里创建以下文件(命名是关键):
appsettings.json:这是基础配置文件,所有环境都会加载它里面的内容appsettings.Development.json:开发环境专用配置,比如调试用的数据库连接、日志级别等appsettings.Production.json:生产环境专用配置,比如正式数据库连接、更严格的日志设置
你还可以根据需要添加其他环境的文件,比如appsettings.Staging.json(预发布环境),命名规则统一为appsettings.{环境名称}.json即可。
2. 配置的加载优先级
ASP.NET Core会自动按顺序加载配置,后面加载的配置会覆盖前面的同名项:
- 先加载
appsettings.json里的基础配置 - 再加载当前运行环境对应的
appsettings.{环境名称}.json,比如开发环境就加载Development后缀的文件,里面的配置会替换基础文件里的相同key - 最后还会加载环境变量、命令行参数等(这部分是额外扩展,和文件配置相关的主要是前两步)
3. 指定当前运行环境
接下来要告诉程序应该使用哪个环境,有几种常用方式:
- 通过launchSettings.json设置(开发阶段):打开项目Properties文件夹下的
launchSettings.json,找到environmentVariables里的ASPNETCORE_ENVIRONMENT,设置成对应的环境名,示例:
"profiles": { "IIS Express": { "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "YourProjectName": { "commandName": "Project", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Production" } } }
- 通过系统环境变量设置(服务器部署):在生产服务器上设置环境变量,Windows下可以用命令:
setx ASPNETCORE_ENVIRONMENT "Production";Linux/macOS下用:export ASPNETCORE_ENVIRONMENT=Production - 通过命令行参数启动:运行程序时加上参数指定环境,比如:
dotnet run --environment Production或者简写为dotnet run -e Production
4. 验证配置是否生效
你可以在代码里注入IConfiguration来读取配置,验证是否加载了对应环境的内容,示例:
public class HomeController : Controller { private readonly IConfiguration _configuration; public HomeController(IConfiguration configuration) { _configuration = configuration; } public IActionResult Index() { // 读取某个配置项,比如数据库连接字符串 var dbConnection = _configuration.GetConnectionString("DefaultConnection"); // 可以输出到日志或者页面,验证是否是当前环境的配置 return View(); } }
额外小提示
- 如果多个环境有共享的配置,不用重复写在每个环境文件里,只需要放在基础的
appsettings.json里就行,环境文件只放差异配置 - 敏感信息(比如API密钥、数据库密码)不要硬编码到配置文件里,开发环境可以用User Secrets,生产环境可以用Azure Key Vault或者其他密钥管理工具,这能大大提升安全性
内容的提问来源于stack exchange,提问作者chobo2
相关产品推荐
相关产品推荐

