Azure 函数中的 Autofac InstancePerRequest 范围

Autofac InstancePerRequest scope in Azure Function

我正在尝试注册一个依赖项以共享每个 运行 的 Eventhub 触发的 Azure 函数的实例(每次 Azure 函数 运行s 创建新实例)。

我试过如下注册:

builder.RegisterType<TrialClass>().As<ITrialClass>().InstancePerRequest(); 

但是它没有说

No scope with a tag matching 'AutofacWebRequest' is visible from the scope in which the instance was requested

有办法处理这种情况吗?

这里有两个问题:

  1. 如今 Azure Functions 并未真正支持 DI,这使得注册和注入变得困难。
  2. 事件中心触发的函数不会在 Web 请求的上下文中执行,因此 Autofac 支持的每个请求 生命周期内建将不起作用

如果您今天的 Autofac 处于半工作状态,您可以尝试@mjwills 的建议并为给定的调用定义生命周期范围(这不会像使用每个请求功能那样微不足道,但可行)。

我们确实在 WebJobs SDK 和函数 Host/Runtime 中开展工作以增强 DI 故事。一些工作与您可以跟踪的 .NET 核心迁移相关或依赖于该迁移 here.