You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure中ASP.NET Core MVC环境变量未识别问题求助

排查Azure App Service环境变量读取问题

1. 确认Azure应用设置的配置类型

如果你的DATABASE_CONNECTION_STRING是在Azure门户的连接字符串板块添加的,而非应用程序设置板块,环境变量名称会被自动添加前缀:

  • SQL Server类型:SQLAZURECONNSTR_DATABASE_CONNECTION_STRING
  • MySQL类型:MYSQLCONNSTR_DATABASE_CONNECTION_STRING
  • 自定义类型:CUSTOMCONNSTR_DATABASE_CONNECTION_STRING

这种情况要么改用带前缀的名称读取,要么把配置移到应用程序设置板块(直接添加键值对),就能用原名称读取。

2. 改用ASP.NET Core配置系统读取(推荐)

ASP.NET Core的IConfiguration默认集成了环境变量、Azure应用设置等配置源,比直接调用Environment.GetEnvironmentVariable更可靠,同时你代码中提前BuildServiceProvider的做法会导致服务重复实例化,建议修改代码如下:

public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebApplication.CreateBuilder(args);

        // Add services to the container.
        builder.Services.AddControllersWithViews();

        // 直接通过builder.Configuration读取,无需提前构建服务提供器
        var connString = builder.Configuration["DATABASE_CONNECTION_STRING"];

        if (string.IsNullOrEmpty(connString))
        {
            throw new InvalidOperationException("环境变量DATABASE_CONNECTION_STRING未定义。");
        }

        var app = builder.Build();

        // 后续中间件配置
        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();
        app.UseAuthorization();
        app.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");

        app.Run();
    }
}

3. 确认Azure应用设置已生效

  • 修改应用设置后必须重启Azure App Service,新环境变量才会生效,检查是否执行了重启操作。
  • 核对环境变量名称的拼写,确保和代码中的完全一致;若App Service使用Linux主机,环境变量名称区分大小写。

4. 排查GitHub Actions发布的影响

检查你的GitHub Actions部署脚本,是否包含覆盖Azure应用设置的步骤(比如az webapp config appsettings set命令),如果脚本中设置了空值或错误值,会覆盖门户中配置的内容。


内容的提问来源于stack exchange,提问作者luis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 02:51:05