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

fro*_*sty 2 azure-functions .net-5

我需要使用 DI 将 .Net 5 隔离进程 Azure 函数中的 IConfiguration 获取到配置服务。我怎样才能做到这一点?

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

Mét*_*ule 11

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

这样,您就可以访问HostBuilderContext包含 的IConfiguration(以及IHostEnvironment如果需要的话)。

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

        // Configure services based on config settings
           
    })
    .Build();
Run Code Online (Sandbox Code Playgroud)

如果需要,您还可以通过以下方法自定义配置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();
Run Code Online (Sandbox Code Playgroud)