1

我想要注册一个依赖项来共享一个实例,每次运行Eventhub触发的Azure函数(每次Azure函数运行时都会创建新的实例)。Azure函数Autofac InstancePerRequest作用域

我试着注册象下面这样:

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

但它没有说

没有一个标签匹配“AutofacWebRequest”的范围是从其中要求实例

的 范围可见

有没有办法处理这种情况?

+0

我不认为DI适当支持Azure函数但是 – Mikhail

+0

如何解决依赖关系? –

+0

我从run.csx – Tany

回答

4

两个问题在这里:

  1. DI没有真正在Azure的功能支持的今天,使登记和注射困难。
  2. 事件枢纽触发功能不web请求的上下文中执行,所以要建在每个请求由Autofac支持寿命是行不通的

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

我们确实在WebJobs SDK和Functions Host/Runtime中发生了一些工作,以增强DI故事。其中一些工作与您可以跟踪的.NET核心迁移相关或依赖于here

+0

手动解析入口点类(这是一个.dll并完成大量工作)我们的回购中的另一个相关问题在这里:https://github.com/Azure/azure-webjobs-sdk-脚本/问题/ 586 – mathewc

+0

您能指点我@mjwills的建议吗.. – Tany

+0

看起来他的评论已被删除,但您可以在这里找到更多关于Autofac的生命期范围的信息:http://docs.autofac.org/en/latest /lifetime/working-with-scopes.html –