Возможен ли пользовательский конфиг Serilog из Program.cs? - PullRequest
0 голосов
/ 12 февраля 2020

Я создаю пользовательскую конфигурацию в ASP. NET Ядро во время конструктора автозагрузки, что-то вроде этого:

public Startup(IWebHostEnvironment environment, IConfiguration configuration) {
    Environment = environment;

    // Add extra config - configs added later override ones added earlier when key names clash
    Configuration = new ConfigurationBuilder()
        .AddConfiguration(configuration)
        .AddXmlFile("appsettings.xml")
        .Build();
}

Моя проблема в том, что, хотя этот новый IConfiguration может быть доступ к ним осуществляется из ConfigureServices и Configure, к нему нельзя обратиться из вызова .UseSerilog() в CreateHostBuilder (Program.cs). Итак, я не могу получить доступ к своей конфигурации XML во время моего звонка:

webBuilder
    .UseStartup<Startup>()
    .UseSerilog((context, config) => {
        config.ReadFrom.Configuration(context.Configuration);
    });

Как я могу обойти это? Могу ли я сделать новую конфигурацию доступной для UseSerilog() лямбда или я могу настроить регистратор позже, в ConfigureServices()?

1 Ответ

0 голосов
/ 12 февраля 2020

ОК, я обнаружил, что могу .UseConfiguration() ранее в цепочке IWebHostBuilder (а не в конструкторе Startup) получить настройки конфигурации XML:

webBuilder
    .UseConfiguration(new ConfigurationBuilder().AddXmlFile("appsettings.xml").Build())
    .UseSerilog((context, config) => {
        config.ReadFrom.Configuration(context.Configuration);
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...