【问题标题】:How to get IConfiguration in Azure Timer function in .Net 5如何在 .Net 5 中的 Azure Timer 函数中获取 IConfiguration
【发布时间】:2021-08-10 15:10:52
【问题描述】:

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

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

【问题讨论】:

    标签: azure-functions .net-5


    【解决方案1】:

    您可以使用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();
    

    【讨论】:

    • 您可以在ConfigureAppConfiguration 中跳过ConfigureAppConfigurationAddCommandLine,因为它们在您调用ConfigureFunctionsWorkerDefaults 时已经添加了
    • 好点,我会删除这些以避免混淆它们是必需的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2020-08-27
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    相关资源
    最近更新 更多