.NET Core 多环境的配置、调试和部署
背景
工作需要配置多个环境,用于 开发Development、预览Staging、生产Production。
微软官方文档-配置:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/?view=aspnetcore-6.0
开始
.NET Core对多环境有很好的支持,默认会读取appsettings.{Environment}.json。
例如,appsettings.Production.json 和 appsettings.Development.json。
其中的Environment就是环境名称
![](https://filescdn.proginn.com/4953c8d789c4da3f2d66688a9400e178/0c8a46d64ed1710e8cb22507b2fd85f3.webp)
配置
创建环境
![](https://filescdn.proginn.com/7610115e31cd965f25a15a34c3d34392/739c9bda7b9987710f4f1ca6742507bc.webp)
项目中已经存在两个配置文件,它们对应的环境都是Development,也就是对应会读取appsettings.Development.json中的配置
![](https://filescdn.proginn.com/ae4152297cc9b41f0a6f7ce5334ce573/4c4a824cfbe917b4473e2e7e14fe378f.webp)
创建配置文件,选择【项目】
![](https://filescdn.proginn.com/169efa6f7054110c6480573d2f3982f1/0a6ddd4f97d77ed12ae0279379a4e1a6.webp)
修改【环境变量】、【应用URL】 ASPNETCORE_ENVIRONMENT=Staging ASPNETCORE_ENVIRONMENT=Production
![](https://filescdn.proginn.com/9aa9ec927638d13c3828a4c3d1f92f69/4527f4c368d659dd0caa12f0baae5902.webp)
继续炮制一个Production
![](https://filescdn.proginn.com/a59b0804265e4c8d6ec20a3d93c9f82f/5686630171f72ef23878ce3c28020d62.webp)
创建环境配置文件
接着创建环境对应的配置文件,直接复制两个appsettings.Development.json,并重命名为 appsettings.Staging.json appsettings.Production.json
![](https://filescdn.proginn.com/37710c92d321a9746b4e2f4e70e28b1d/415b0560a17a26dccd677ef51732d784.webp)
在配置文件中写入配置用以测试["CustomConfig": "这里是Development环境的配置"]
![](https://filescdn.proginn.com/3fc7519273ce22212d3021b52a058f99/429db673d7626888b88642bcab452da6.webp)
调试
这时已经可以在启动项目时选择不同的环境配置了,若选择Staging,就会读取appsettings.Staging.json
![](https://filescdn.proginn.com/03020d41d2d913ba05daf3296efff28e/b104eed495170ab9396b5c3a562d9a58.webp)
修改控制器代码,尝试读取配置
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private readonly IConfiguration Configuration;
public WeatherForecastController(IConfiguration configuration)
{
Configuration = configuration;
}
[HttpGet]
public ActionResult GetCustomConfig()
{
return Content($@"读取CustomConfig配置为:{Configuration["CustomConfig"]}");
}
}
![](https://filescdn.proginn.com/5418114ea72cd8cf6da5a5ffa334083d/cdd2dd306504969a70cf1a166eca2c0d.webp)
![](https://filescdn.proginn.com/10126f61eaaa1ae4200e01e2c9db178d/e74764c1133b43f705b3bedce5e4d228.webp)
![](https://filescdn.proginn.com/74824be361da432cb47d39075a4dbefc/08a373a48d506271f51fbea2342a2fe3.webp)
部署
环境配置已经配好了,接下来我希望将文件发布到不同环境,能自动读取对应配置文件。
右键网站->发布,创建发布配置
![](https://filescdn.proginn.com/e85f69f0732c97efefdb9fbfaff8aa6e/bbbcec7c1963167c3a561e5919b150fa.webp)
创建配置后会生成PublishProfiles文件夹
![](https://filescdn.proginn.com/977c69cd0d57233a6fae56966c772df9/261e3bb48f3f58ef8bc1a177d87faac0.webp)
在{Environment}.pubxml文件中添加环境参数:<EnvironmentName>Staging</EnvironmentName>
![](https://filescdn.proginn.com/3b0f06ce18c3eeab817e761adb45703d/806da7a5d551db644d80ad2de24cd752.webp)
在站点点击发布,到发布位置打开web.config,可以看到多了环境变量参数。
![](https://filescdn.proginn.com/8da604cb412eea6b9b16c9b2a651c3c3/434256727fcae6210925596797e79466.webp)
转自:朱角
链接:cnblogs.com/HyattXu/p/16493466.html