Использование AddEnvironmentVariables в приложении. net core 3.1 - PullRequest
0 голосов
/ 05 февраля 2020

Я создал новый веб-проект. похоже, что в. net core 3.1 appSettings.jsons были сгенерированы и работают нормально. проблема в том, что они загружаются и контролируются средой выполнения, а не мной. Поэтому я не могу вызвать AddEnvironmentVariables

Где в таком случае позвонить AddEnvironmentVariables?

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }
}

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }

1 Ответ

2 голосов
/ 11 февраля 2020

Документация , вероятно, является лучшим местом для ознакомления со всеми доступными методами конфигурации. Чтобы ответить на заданный вами c вопрос, метод расширения, за которым вы работаете, определен в IConfigurationBuilder, поэтому он должен быть вызван до того, как вы создадите свой хост следующим образом:

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                })
                .ConfigureAppConfiguration(configurationBuilder => { configurationBuilder.AddEnvironmentVariables(); }) // here's where you add another `EnvironmentVariablesConfigurationSource`
                ;

Однако

значение по умолчанию EnvironmentVariablesConfigurationSource уже введено для вас ConfigureWebHostDefaults, поэтому у вас будет два поставщика.

Я предполагаю, что вы хотите вместо этого внедрить настроенную конфигурацию, поэтому вам может понадобиться сначала удалить конфигурацию по умолчанию из списка:

.ConfigureAppConfiguration(configurationBuilder =>
{
    configurationBuilder.Sources.Remove(
    configurationBuilder.Sources.First(source =>
        source.GetType() == typeof(EnvironmentVariablesConfigurationSource))); //remove the default one first
    configurationBuilder.AddEnvironmentVariables(); 
})

, надеюсь, это даст вам отправную точку для изучения далее

...