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();
}
}
}
希望对您有所帮助!
我有几个函数想重构为 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();
}
}
}
希望对您有所帮助!