ASP.NET Core多环境配置文件问题
前言
在我们开发的过程中,往往会有这几个环境,Dev、QA、Pre和Pro。
当然不同的环境可能大家的叫法会有点不一样。
最常遇到的问题,或许就是不同环境的配置文件问题!
一个环境一个配置文件是很常见的做法。
在开发的时候,我们可以通过修改launchSettings.json来达到不同环境的切换。
本质是通过ASPNETCORE_ENVIRONMENT这个变量值来完成。
但是部署到服务器的时候就需要换个方式来处理这个问题了。 因为发布后的文件并没有launchSettings.json。
这里简单介绍两种方法来处理这个问题。
方法1
设置系统的环境变量。
修改 /etc/profile
文件,添加下面的配置
export ASPNETCORE_ENVIRONMENT=QA
再执行source命令,使其生效。
source /etc/profile
执行 dotnet myweb.dll
的时候就可以看到下面的结果
Hosting environment: QA
Content root path: /var/www/testweb
Now listening on: http://127.0.0.1:47372
Application started. Press Ctrl+C to shut down.
这种做法,虽然可以完成不同环境的切换问题,但是要为每台机器设置一个环境变量。
由于直接是镜像copy出来的系统,好多系统配置是已经做好标准规范的了,所以这样做还是会很麻烦,运维的同学肯定也不愿意每copy一台机器,都帮你改这个东西。
所以这个方法自已玩玩的机率比较多。
方法2
在启动程序的时候,添加一个名为environment的Command-Line参数,同时指定它的值为对应的环境值。
下面的例子是托管在Jexus时的写法。
AppHost={
cmd=dotnet /var/www/testweb/myweb.dll --environment QA;
root=/var/www/testweb;
port=0;
}
这个时候看到的日志也是一样的效果。
Hosting environment: QA
Content root path: /var/www/testweb
Now listening on: http://127.0.0.1:47372
Application started. Press Ctrl+C to shut down.
通过这种方法,可控性看上去比较好,只需要加个参数即可。
如果用方法2需要注意一点:
在Program.cs中,不要忘记AddCommandLine。
不过如果用的是WebHost.CreateDefaultBuilder(args)
就可以忽略这一点了。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述