前言
在我们实际开发过程中一般分为开发环境和生产环境, 这两个环境一般配置会有不一样, 例如数据库连接字符串. .net core 框架中提供三个值, Development(开发), Staging(分阶段), Production(生产环境). 我们可以根据这个来配置不同的环境.
创建appsettings文件
在创建项目的时候系统会默认创建一个appsettings.json 和 appsettings.Development.json文件. 其中appsettings.Development.json用于存储仅用于开发环境的配置, 而appsettings.json存储公共配置. 我们还可以自己新建appsettings.Production.json. 用于存储仅用于生成环境的. 新增appsettings.Staging.json 用于分阶段的环境
我们写一个数据库连接字符串的
appsettins.Production.json
appsettings.json
appsettings.Development.json
读取appsettings文件
.net core 中默认已经注入了读取appsettings.json的方法, 我们只要使用就可以了
[ApiController] [Route("[controller]/[action]")] public class DemoController : ControllerBase { private readonly IConfiguration _configuration; public DemoController(IConfiguration configuration) { _configuration = configuration; } public IActionResult TestGet() { var cfRt = _configuration["DbConnect"]; return Ok(cfRt); } }
系统默认读取配置文件的顺序是
开发环境
appsettings.Development.json -> appsettings.json
生产环境
appsettings.Production.json -> appsettings.json
没有Development和Production的时候默认读取 appsettings.json
如何修改读取文件
如果不想是默认的读取文件, 可以手动修改.
开发环境
点击项目的属性, 点击调试, 将环境变量改为 Producttion, 这样开发环境就可以直接读取 appsettings.Production.json.
如果你设置的值找不到, 则会读取appsettings.json里的
生产环境
生产环境我们通过修改服务器上的web.config文件, 在apsNetCore节点里添加
其中 value 可以设置你想要读取的文件. 如果找不到则会读取 appsettings.json里的
<aspNetCore processPath="dotnet" arguments=".\FanjqOneSln.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" > <environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> environmentVariables> aspNetCore>
参考文献
1. 在 ASP.NET Core 中使用多个环境
2. ASP.NET Core 根据环境变量支持多个 appsettings.json配置文件