Используйте параметры приложения непосредственно из веб-приложения Azure, а не из appsettings.Production.json - PullRequest
0 голосов
/ 04 апреля 2019

Я хотел бы использовать параметры приложения для производственной среды, определенные в веб-приложении 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 Ответ

0 голосов
/ 04 апреля 2019

Ну, я не уверен, что это на самом деле проблема, но в любом случае это бесполезный код.CreateDefaultBuilder, среди прочего, настраивает различные провайдеры конфигурации, в том числе для appsettings.json и appsettings.{environment}.json.Затем он продолжает добавлять такие вещи, как переменные окружения.

В лучшем случае нет причин для вашего вызова ConfigureAppConfiguration, поскольку эти файлы уже добавляются посредством вызова CreateDefaultBuilder.Тем не менее, существует также порядок действий при добавлении конфигурации: а именно, поставщики конфигурации, добавленные позже, переопределяют ранее добавленные.Таким образом, добавляя ваши файлы JSON снова вот так, вы фактически делаете их включенным последним провайдером конфигурации, то есть они переопределяют все .Я считаю, что параметры приложения в Azure добавляются в качестве переменных среды.Обычно это заставляет их переопределять все ваши файлы JSON, поскольку поставщик переменных среды добавляется после поставщиков JSON.Тем не менее, вы перевернули сценарий сейчас, делая его переопределенным JSON.

Я не уверен, почему удаление их из вашего JSON приведет к ошибке, но я достаточно уверен, что простое удалениеConfigureAppConfiguration вызов должен просто заставить все работать как задумано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...