gpt4 book ai didi

c# - 如何将自定义配置提供程序添加到azure函数

转载 作者:行者123 更新时间:2023-12-03 05:14:01 25 4
gpt4 key购买 nike

我实现了自定义配置提供程序,它在网络应用程序中运行良好。但我还需要在 azure 函数中使用它。而且目前看来是不可能的。 IFunctionsHostBuilder 允许获取已预先构建的 IConfigurationRoot 实例的上下文。我找不到像在我的网络应用程序中一样访问 IConfigurationBuilder 的方法。有人设法解决这个问题吗?

最佳答案

感谢 Rogerson Nazário 的评论。

It can be done by using a custom configuration provider in Azure Functions.

通过创建一个类并使其实现IConfigurationProvider 接口(interface)。创建的类负责从自定义源中检索配置值并将其添加到 IConfigurationBuilder 中。

并创建一个实现 IConfigurationSource 接口(interface)的类。此类将负责创建自定义配置提供程序的实例。

在 Startup 类中,将自定义配置源添加到 IConfigurationBuilder。您可以通过调用 IConfigurationBuilder 上的 Add 方法并传入 IConfigurationSource 实现的实例来完成此操作。

public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
{
builder.ConfigurationBuilder
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Add<MyCustomConfigurationSource>();
}

在 Azure Function 中使用 IConfiguration 实例。

您可以通过使用 FunctionName 属性将 IConfiguration 实例注入(inject) Azure Function 来实现此目的。


public static class MyFunction
{
[FunctionName("MyFunction")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log,
IConfiguration configuration)
{
// Use configuration values here
}
}

通过重写ConfigureAppConfiguration方法来使用Azure Functions的自定义配置提供程序在函数应用程序的 StartUp 类中。

感谢@Glenn Gailey functions-dotnet-dependency-injection code.

using System;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]
namespace MyNamespace
{ public class Startup : FunctionsStartup { public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { FunctionsHostBuilderContext context = builder.GetContext(); builder.ConfigurationBuilder .AddJsonFile(Path.Combine(context.ApplicationRootPath, "appsettings.json"), optional: true, reloadOnChange: false) .AddJsonFile(Path.Combine(context.ApplicationRootPath, $"appsettings.{context.EnvironmentName}.json"), optional: true, reloadOnChange: false) .AddEnvironmentVariables(); }
}
}

关于c# - 如何将自定义配置提供程序添加到azure函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75518896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com