Azure WebJobs - 未找到任何功能 - 如何进行无触发工作?

Ray*_*Ray 15 c# azure azure-webjobs

我是Azure WebJobs的新手,我运行了一个示例,其中用户将图像上传到blob存储并将记录插入到队列中,然后作业从队列中检索该记录作为信号来执行调整上传图像的大小.基本上在代码中,作业使用QueueTrigger公共静态方法的属性来完成所有这些操作.

现在我需要一个工作,就像每小时将一条记录插入数据库表,它没有任何类型的触发器,它只是自己运行.我该怎么做呢?

我尝试了一个静态方法,并在其中我插入到db,工作确实开始,但我收到一条消息说:

找不到任何功能.尝试将作业类公开,方法公共静态.

我错过了什么?

编辑 维克多的回答后,我尝试了以下方法,

static void Main()
{
    JobHost host = new JobHost();
    host.Call(typeof(Program).GetMethod("ManualTrigger"));
}

[NoAutomaticTrigger]
public static void ManualTrigger()
{
    // insert records to db
}
Run Code Online (Sandbox Code Playgroud)

但这次我得到了InvalidOperationException,

无法从Azure WebJobs SDK调用"Void ManualTrigger()".是否缺少Azure WebJobs SDK属性?

Vic*_*aci 16

如果您不使用WebJobs SDK(QueueTrigger,Blob,Table等)中的任何输入/输出属性,则必须使用NoAutomaticTrigger要由SDK识别的属性来装饰作业.

  • 啊,你是对的,我只是在"类程序"上宣布"公开",它运行但是它显示下面的msg几秒钟然后控制台窗口就崩溃了.消息:"找到以下函数:WebJob1.Program.ManualTrigger执行:'Program.ManualTrigger'因为这是通过主机API以编程方式调用的函数." (3认同)
  • 即使没有自动触发,使用SDK也有一个优点.在主机运行时(也就是RunAndBlock或host.Start),您可以在WebJobs仪表板中看到该功能.这允许您直接从那里调用函数.将host.Call视为一个花哨的MethodInfo.call,它为您提供仪表板日志记录 (2认同)