Новый Azure Function 3.0 SDK предоставляет способ реализации класса Startup. Он предоставляет доступ к набору служб, доступных посредством внедрения зависимостей, где я могу добавить свои собственные компоненты и сторонние службы.
Но я не знаю, как использовать файл конфигурации.
[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]
namespace MyNamespace
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
...
Мои сторонние службы принимают в качестве параметра большие структуры, и эти файлы конфигурации копируются с помощью двоичных файлов. Я могу скопировать их в подраздел appsettings. json file:
{
"MachineLearningConfig" : {
( about 50+ parameters and subsections )
}
}
Значения конфигурации обновляются в соответствии со средой развертывания. Я использую Azure Задачу преобразования файлов Devops для этого: производственные значения отличаются от промежуточных и dev-значений.
Учитывая документацию https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-dependency-injection, способ загрузки этих параметров:
builder.Services.AddOptions<MachineLearningConfig>()
.Configure<IConfiguration>((settings, configuration) =>
{
configuration.GetSection("MachineLearningConfig").Bind(settings);
});
Но для этого необходимо добавить все настройки как ключ / значение строки в среде хоста, и это то, что я не хочу делать. Их слишком много, и поддерживать их не так просто, как в файле конфигурации json.
Я скопировал appsettings. json рядом с хостом. json .
Но файл appsettings. json, читаемый при запуске с помощью Azure Function SDK, не является набором приложений моего приложения. json, но Azure Набор функций функциональных инструментов. json. Так что configuration.GetSection("MachineLearningConfig")
возвращает пустые значения, так как в папке Azure Function tools нет файла appsettings.
Итак, мой вопрос: как получить мой MachineLearningConfig
раздел, прочитанный из моего appsetting.json
файла, введенного как IOption<MachineLearningConfig>
в мое приложение?