Azure功能中的Autofac InstancePerRequest范围

时间:2017-07-06 13:36:28

标签: c# dependency-injection inversion-of-control autofac azure-functions

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

我尝试过如下注册:

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

但它没有说

  

从中可以看到没有与“AutofacWebRequest”匹配的标记的范围   请求实例的范围

有办法处理这种情况吗?

1 个答案:

答案 0 :(得分:4)

这里有两个问题:

  1. 目前,Azure功能尚未真正支持DI,这使得注册和注入变得困难。
  2. 事件中心触发的函数不会在Web请求的上下文中执行,因此在Autofac支持的 per request 生存期内构建将无法正常工作
  3. 如果今天你的Autofac处于半工作状态,你可以尝试@mjwills的建议并为给定的调用定义一个生命周期范围(这不会像使用每个请求功能那样简单,但可行)。

    我们确实在WebJobs SDK和Functions Host / Runtime中进行了工作,以增强DI故事。某些工作与您可以跟踪的here

    相关或依赖于.NET核心迁移