首页 > 解决方案 > ASPNETCORE_ENVIRONMENT 设置为生产时 Azure 应用服务访问数据库问题

问题描述

Azure 中的应用服务有一个名为 ASPNETCORE_ENVIRONMENT 的变量,如果不存在,则将其设置为生产。它也可以手动添加并设置为生产。当该变量设置为生产时,我的应用程序拒绝从数据库中提取任何内容,但是当它设置为开发时,一切正常。

我仔细检查了一个 appsettings.json 和 appsettings.Development.json 都指向同一个数据库。代码中不检查环境变量,所有与该检查相关的代码都被删除。

我得到的错误是“查询没有返回结果”,但是一旦环境设置为开发,相同的查询和相同的数据库就会返回所有结果。

标签: azureasp.net-coreweb-applications

解决方案


您是否尝试过在 startup.cs 文件中设置配置?如果没有,请尝试以下选项,看看它是否适合您。

通常从我们的 ASP.NET Core 获取这些设置的方法是访问注入的环境变量。因此,我们必须将这些环境变量加载到 Startup.cs 文件中的配置中:

public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    }

指定配置源的顺序也很重要,因为这确定了设置存在于多个位置时应用的优先级。


推荐阅读