Я пытаюсь использовать объект конфигурации вместо 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, но его нет в объекте конфигурации.Все остальные мои переменные окружения работают как положено в Конфигурации.