ASP.NET Core 提供了灵活的方式来管理不同运行环境下的配置,环境变量是其中关键的一环。应用通过环境变量 ASPNETCORE_ENVIRONMENT 来识别当前运行环境,常见的值有 Development、Staging 和 Production。
设置 ASPNETCORE_ENVIRONMENT 变量
这个变量决定了应用加载哪个环境特定的配置文件,比如 appsettings.Development.json 或 appsettings.Production.json。你可以在多个地方设置它:
操作系统环境变量:直接在系统中设置,适用于全局生效。 launchSettings.json:开发阶段最常用的方式,在项目目录的 Properties 文件夹中配置,只影响本地调试。 Docker 或 K8s 配置:容器化部署时通过 Dockerfile 或 yaml 文件注入。 Web 服务器配置:如 IIS 的 web.config 或 Nginx 的启动脚本中设置。读取自定义环境变量
除了框架级别的环境标识,你还可以在代码中读取自定义环境变量,用于数据库连接、密钥等配置:
IConfiguration configuration = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
string myVar = configuration["MY_CUSTOM_VAR"];
如果使用默认的主机构建方式(如 CreateDefaultBuilder),环境变量源已经自动添加,可直接通过 IConfiguration 实例访问。
结合 appsettings.json 使用
推荐将配置分层管理:
appsettings.json:存放通用配置。 appsettings.{Environment}.json:覆盖特定环境的值。 环境变量:用于敏感信息或部署时动态传入,优先级最高。例如,数据库连接字符串在开发环境用本地地址,生产环境通过环境变量提供,避免硬编码。
判断当前环境并执行逻辑
在 Startup.cs 或 Program.cs 中,可以通过 IWebHostEnvironment 判断环境:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
}
支持的方法有 IsDevelopment()、IsStaging()、IsProduction(),便于控制中间件行为。
基本上就这些。合理利用环境变量,能让应用在不同阶段安全、灵活地运行。
