Используйте параметры приложения непосредственно из веб-приложения Azure, а не из appsettings.Production.json
Я хотел бы использовать параметры приложения для производственной среды, как они определены в веб-приложении Azure: см. Здесь
В настоящее время использую appsettings*.json
файлы, чтобы получить эти значения в Program.cs
для правильной среды:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((builderContext, config) =>
{
IHostingEnvironment env = builderContext.HostingEnvironment;
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
})
.UseStartup<Startup>()
.Build();
Эти значения в настоящее время определены в JSON, например,
"ConnectionStrings": {
"LocalizationAdminContext": "Data Source=example;Initial Catalog=example;Integrated Security=True;MultipleActiveResultSets=True"
},
"DbResourceConfiguration": {
"ConnectionString": "Data Source=example;Initial Catalog=example;Integrated Security=True;MultipleActiveResultSets=True"
}
Я пытался удалить их из appsettings.production.json
чтобы заставить его использовать те, которые поставляются в Azure, но он допустил ошибку. Я думаю, что, как это установлено в Program.cs
он всегда будет искать настройки в соответствующем json-файле среды.
Как мне переписать это в конфиге, чтобы использовать настройки приложения? Предпочтительно только для производственной среды.
1 ответ
Ну, я не уверен, что это на самом деле проблема, но в любом случае это бесполезный код. CreateDefaultBuilder
среди прочего, настраивает различные провайдеры конфигурации, в том числе для appsettings.json
а также appsettings.{environment}.json
, Затем он продолжает добавлять такие вещи, как переменные среды.
В лучшем случае, нет причин для вашего звонка ConfigureAppConfiguration
так как эти файлы уже добавляются через вызов CreateDefaultBuilder
, Тем не менее, существует также порядок действий при добавлении конфигурации: а именно, поставщики конфигурации, добавленные позже, переопределяют ранее добавленные. Таким образом, добавляя ваши файлы JSON снова вот так, вы фактически делаете их последним включенным поставщиком конфигурации, то есть они переопределяют все. Я считаю, что параметры приложения в Azure добавляются в качестве переменных среды. Обычно это заставляет их переопределять все ваши файлы JSON, поскольку поставщик переменных среды добавляется после поставщиков JSON. Тем не менее, вы перевернули скрипт, сделав его переопределенным JSON.
Я не уверен, почему удаление их из вашего JSON приведет к ошибке, но я достаточно уверен, что простое удаление ConfigureAppConfiguration
вызов должен просто заставить все работать как задумано.