如何在 .Net 5 中获取 Azure Timer 函数中的 IConfiguration

How to get IConfiguration in Azure Timer function in .Net 5

我需要使用 DI 将 .Net 5 隔离进程 Azure 函数中的 IConfiguration 获取到 ConfigureServices。我该怎么做?

    var host = new HostBuilder()
        .ConfigureFunctionsWorkerDefaults()
        .ConfigureServices(s => { 
            // Get IConfiguration
            // Configure services based on config settings
        })
        .Build();

您可以使用 ConfigureServices(Action<HostBuilderContext, IServiceCollection> configureDelegate) 重载。

这样,您就可以访问包含 IConfigurationHostBuilderContext(如果需要,还可以访问 IHostEnvironment)。

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureServices((hostBuilderContext, s) =>
    { 
        // Get IConfiguration
        var configuration = hostBuilderContext.Configuration;

        // Configure services based on config settings
           
    })
    .Build();

如果需要,您还可以通过 ConfigureAppConfiguration(Action<HostBuilderContext, IConfigurationBuilder> configureDelegate) 方法自定义配置:

var host = new HostBuilder()
    .ConfigureFunctionsWorkerDefaults()
    .ConfigureAppConfiguration((hostingContext, configBuilder) =>
    {
        configBuilder
            .AddJsonFile("custom-settings.json", optional: true, reloadOnChange: true)
            ;
    })
    .ConfigureServices((hostBuilderContext, s) =>
    { 
        // Get IConfiguration
        var configuration = hostBuilderContext.Configuration;

        // Configure services based on config settings
           
    })
    .Build();