我有一个 Azure Functions 应用程序,它使用在 [WebJobsStartup] 中初始化的自定义参数绑定 - 如何将这些迁移到新的[FunctionsStartup]处理方式?
在 [WebJobsStartup] 中,绑定是通过调用 builder.AddExtension 和 .AddBindingRule 来注册的
现在新的 Azure SDK 说要使用 [FunctionsStartup] - 我如何在其中加入(或替换).AddBindingRule?
FunctionsStartup 实现看起来像:-
[assembly: FunctionsStartup(typeof(EventSourcingOnAzureFunctions.Common.Startup))]
namespace EventSourcingOnAzureFunctions.Common
{
public class Startup
: FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.AddAppSettingsToConfiguration();
// Initialise any common services
CQRSAzureBindings.InitializeServices(builder.Services);
builder.Services.AddWebJobs(ConfigureWebJobs );
}
public void ConfigureWebJobs(JobHostOptions hostOptions)
{
}
}
它用于注册绑定规则的方式如下:-
/// <summary>
/// Initailise any common dependency injection configuration settings
/// </summary>
/// <param name="context"></param>
public static void InitializeInjectionConfiguration(ExtensionConfigContext context)
{
// Set up the dependency injection stuff for the custom bindings
// 1: EventStream
context
.AddBindingRule<EventStreamAttribute>()
.BindToInput<EventStream>(BuildEventStreamFromAttribute)
;
}
如果我按原样运行函数应用程序,则绑定规则代码不会被调用,因此函数索引失败,例如
Microsoft.Azure.WebJobs.Host:索引方法“DepositMoney”出错。Microsoft.Azure.WebJobs.Host:无法将参数“bankAccountEvents”绑定到类型 EventStream。确保绑定支持参数类型。如果您正在使用绑定扩展(例如 Azure 存储、ServiceBus、计时器等),请确保您已在启动代码中调用了扩展的注册方法(例如 builder.AddAzureStorage()、builder.AddServiceBus( )、builder.AddTimers() 等)。