Почему WebHost.CreateDefaultBuilder.UseConfiguration не передает конфигурацию в приложение - PullRequest
0 голосов
/ 03 января 2019

WebHost.CreateDefaultbuilder (args). Предполагается, что по умолчанию используется конфигурация как для веб-хоста, так и для приложения. ConfigureAppConfiguration используется только для настройки приложения, а не хоста.

Код ниже работал раньше, без проблем. После обновления с .net core 2.1 до 2.2 и обновления некоторых пакетов nuget для поддержки .net core 2.2 код больше не работает.

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

return WebHost.CreateDefaultBuilder(args)
    .UseContentRoot(AppDomain.CurrentDomain.BaseDirectory)
    .UseConfiguration(ConfigurationService.Config)
    // Dirty hack to temp fix my problem
    //.ConfigureAppConfiguration(configuration => configuration.AddConfiguration(ConfigurationService.Config))
    .UseStartup<Startup>()
    .UseSerilog()
    .Build();

ConfigurationService.Config - это статическая сборка ConfigurationRoot до вызова веб-хоста. ConfigurationService также начинает запись в журнал, определяет некоторые каталоги и другие вещи.

Возвращенная конфигурация содержит: environment, файл appsettings.json, файл custom.json и провайдеры командной строки. Я знаю, что это работает для хоста из-за конфигурации kestrel в файле custom.json. Перед всеми изменениями, если бы я добавил зависимость в IConfigurationRoot, я бы также увидел тех же поставщиков.

Теперь я вижу стандартные поставщики ядра .net на зависимости IConriguration (цепочка, среда, appsettings, appsetting.development, командная строка) (самое главное, мой файл custom.json здесь отсутствует).

Я уже пробовал, не используя статический корень конфигурации значков, и собрал его тем же методом, который возвращает WebHost, но безрезультатно, поэтому он не имеет никакого отношения к моему ConfigurationService.

1 Ответ

0 голосов
/ 03 января 2019

Хорошо, моя ошибка.

Я пытался получить параметры из пропущенного сервис-провайдера одним из моих методов.Но так как приложение еще не было запущено, мне сначала пришлось собрать serviceCollection вручную.

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