如何将任意参数传递给Azure WebJob SDK方法?

时间:2017-10-09 07:58:13

标签: f# azure-webjobs azure-webjobssdk

我使用Trigger计划有一个Azure WebJob功能:

driver verifier

但是我想将一些上下文信息传递给webjob,例如

let resetTablesWebJob([<TimerTrigger "*/10 * * * * *">] timer:TimerInfo) =
    // do stuff
    ()

我在SO和其他地方看过一些帖子,通过DI和AutoFac等来完成这一切的麻烦 - 是否有一种稍微轻松的方式来做这个,我可以简单地传入let resetTablesWebJob([<TimerTrigger "*/10 * * * * *">] timer:TimerInfo, myData:Foo) = // do stuff with myData, too. () 在初始化时,某个对象或值会在webjob调用期间被绑定引擎接收?

1 个答案:

答案 0 :(得分:1)

你不能这样做。计时器是一个触发器,触发器调用您的函数。没有机会与触发器一起传递参数。唯一允许的参数是触发器参数和可能从触发器派生的绑定。

相反,你可以:

  1. 引用静态变量。
  2. 使用IJobActivator并传递以创建类的实例,然后通过实例属性传入arg。这是DI的构建模块,但直接使用IJobActivator可以比完整的DI更轻量级。
  3. 使用绑定。例如,将您的参数放在blob(或表,或文件,或redis,或您绑定的任何其他内容)中,然后绑定到它。即,在[<Blob('container/blob.txt')>] data :string