Azure Durable Functions:我可以使用 startup.cs 吗?

Azure Durable Functions: Can I use a startup.cs?

我有几个函数想重构为 Azure Durable Function,其中协调器调用不同的 ActivityFunctions(以前单独的 Azure Functions)。单独的函数使用一个启动项,我在其中配置依赖项注入和一些其他配置。 是否可以在 Durable Function 方案中使用启动 class?我在 documentation.

中找不到任何似乎暗示这一点的内容

如果不行,还有什么其他的选择,例如定义数据库连接字符串和依赖注入?

谢谢

是的,您可以使用 Dependency Injection 类似于普通函数。

我在这个 blog

中找到的完整示例

在持久函数中也可以进行依赖注入。

从 Nuget 安装并添加对以下包的引用:

Microsoft.Azure.Functions.Extensions.DependencyInjection

这是完成依赖注入的启动文件的工作示例:

using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Azure.WebJobs.Host.Bindings;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using System;


[assembly: FunctionsStartup(typeof(MyDurableFunction.Startup))]

namespace MyDurableFunction
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            var executioncontextoptions = builder.Services.BuildServiceProvider()
                .GetService<IOptions<ExecutionContextOptions>>().Value;
            var currentDirectory = executioncontextoptions.AppDirectory;
            var environment = Environment.GetEnvironmentVariable("AZURE_FUNCTIONS_ENVIRONMENT");

            var config = new ConfigurationBuilder()
               .SetBasePath(currentDirectory)
               .AddJsonFile($"settings.{environment}.json", optional: false, reloadOnChange: false)
               .AddEnvironmentVariables()
               .Build();

            builder.Services.AddSingleton<IMyBusinessService1>(sp =>
            {
                var secretFromAppSettings = config["secretKey"];
                var passwordFromAppSettings = config["secretPassword"];
                return new MyBusinessService1(secretFromAppSettings, passwordFromAppSettings);
            });

            builder.Services.AddSingleton<IDatabaseHelper, DatabaseHelper>();

            builder.Services.AddLogging();
        }

    }
}

希望对您有所帮助!