Azure部署ASP.NET Core 7应用无法读取ASPNETCORE_ENVIRONMENT值
问题分析与解决
问题根源
日志中出现settings..json的文件找不到错误,说明代码中获取ASPNETCORE_ENVIRONMENT环境变量时返回了空值。原因是你在WebApplicationBuilder初始化完成前调用了Environment.GetEnvironmentVariable,此时Azure应用服务设置的环境变量还未被加载到当前进程的环境变量集合中,导致拼接的配置文件名出现空段。
解决方案
1. 使用Builder内置的环境名称替代直接读取环境变量
修改Program.cs中的配置加载代码,用builder.Environment.EnvironmentName替换Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"):
builder.Configuration .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("settings.json", false, true) .AddJsonFile($"settings.{builder.Environment.EnvironmentName}.json", false, true) .AddEnvironmentVariables();
WebApplicationBuilder初始化时会自动读取Azure设置的环境变量,包括ASPNETCORE_ENVIRONMENT,因此builder.Environment.EnvironmentName能正确获取到production值,拼接出正确的settings.production.json文件名。
2. 验证环境变量是否生效
- 登录Azure应用服务控制台,执行命令
echo $ASPNETCORE_ENVIRONMENT,确认输出为production。 - 在代码中添加日志输出环境名称,验证是否正确获取:
Serilog.Log.Information("Current environment: {EnvironmentName}", builder.Environment.EnvironmentName);
3. 确认配置文件已部署
检查部署包中是否包含settings.production.json文件:
- 本地发布应用时,确保该文件的“复制到输出目录”属性设置为“始终复制”或“如果较新则复制”。
- 通过Azure应用服务的高级工具(Kudu),查看
site/wwwroot目录下是否存在该文件。
内容的提问来源于stack exchange,提问作者Miguel Moura
相关产品推荐
相关产品推荐

