Переменная среды строки подключения отсутствует в объекте Configuration, но ее можно найти с помощью GetEnvironmentVariable - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь использовать объект конфигурации вместо Environment.GetEnvironmentVariable.

Работает нормально, за исключением переменной среды «SQLAZURECONNSTR_COMPANY», к которой можно получить доступ через GetEnvironmentVariable, но не отображается в конфигурации.

У меня есть этот код в основном методе Программы.cs

CreateWebHostBuilder(args).ConfigureAppConfiguration((hostingContext, config) =>
            {
                var env = hostingContext.HostingEnvironment;

                config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);

                config.AddEnvironmentVariables();
            })
            .UseSerilog((hostingContext, loggerConfiguration) =>
            {
                loggerConfiguration
                    .ReadFrom
                    .Configuration(hostingContext.Configuration);
            })
            .UseApplicationInsights()
            .Build()
            .Run();

И чтобы убедиться, что все мои переменные окружения установлены, я запускаю этот код в startup.cs

    var environmentVariableNames = new List<string>
            {
                "APPLICATION_INSIGHTS_KEY",
                "SQLAZURECONNSTR_COMPANY",
                "IDENTITY_API_BASE_URL"
            };

        foreach (var environmentVariableName in environmentVariableNames)
        {
            var x = Configuration[environmentVariableName];

            var environmentVariable = Environment.GetEnvironmentVariable(environmentVariableName);

            if (String.IsNullOrEmpty(environmentVariable))
            {
                Log.Logger.Fatal($"Test.Company::ConfigureServices -  The {environmentVariableName} environment variable is null.  Please set the environment variable.  Application Stopping.");
                ApplicationLifetime.StopApplication();
            }
        }

Для одной из моих переменных окружения, которую я установилв настройках проекта для локального использования ожидаемое значение возвращается из GetEnvironmentVariable, но его нет в объекте конфигурации.Все остальные мои переменные окружения работают как положено в Конфигурации.

1 Ответ

0 голосов
/ 30 сентября 2019

Моей проблемой было имя моей переменной среды.Он был назван «SQLAZURECONNSTR_COMPANY», и его можно получить с помощью Environment.GetEnvironmentVariable, но конфигурация получает его и переименовывает в ConnectionStrings: COMPANY.Для меня правильным способом было бы позвонить по номеру

Configuration.GetConnectionString("COMPANY");

https://docs.microsoft.com/en-us/azure/app-service/configure-common#configure-connection-strings

.
...