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 –