【问题标题】:Autofac InstancePerRequest scope in Azure FunctionAzure 函数中的 Autofac InstancePerRequest 范围
【发布时间】:2017-07-06 13:36:27
【问题描述】:

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

我尝试如下注册:

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

但它失败了

标签匹配“AutofacWebRequest”的范围不可见 请求实例的范围

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

【问题讨论】:

  • 我不认为 Azure Functions 正确支持 DI
  • 如何解决依赖关系?
  • 我从 run.csx 手动解析入口点类(这是一个 .dll 并完成大部分工作)

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


【解决方案1】:

这里有两个问题:

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多