当前位置: 首页 > 知识库问答 >
问题:

Azure WebJobs -找不到函数-如何创建无触发器作业?

白云
2023-03-14

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

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

我尝试使用一个静态方法,并在其中插入到数据库中,作业确实开始了,但我收到一条消息说:

找不到函数。尝试将作业类公开,方法公开静态。

我遗漏了什么?

在Victor的回答之后,我尝试了以下方法,

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

[NoAutomaticTrigger]
public static void ManualTrigger()
{
    // insert records to db
}

但这次我得到了<code>InvalidOperationException</code>,

'Void ManualTrigger()' 無法從 Azure WebJobs SDK 调用。它是否缺少 Azure WebJobs SDK 属性?

共有2个答案

彭开畅
2023-03-14

您可以使用最新的WebJobs SDK,它支持基于相同的CRON表达式格式按计划触发作业函数。您可以使用它来安排每小时的工作:

[Disable("DisableMyTimerJob")]
public static void TimerJob([TimerTrigger("00:01:00")] TimerInfo timerInfo, TextWriter log)
{
    log.WriteLine("Scheduled job fired!");
}

此外,WebJobs SDK 还具有可应用于函数的 DisableAttribute,允许您根据应用程序设置启用/禁用函数。如果在 Azure 管理门户中更改应用设置,作业将重新启动(https://azure.microsoft.com/en-us/blog/extensible-triggers-and-binders-with-azure-webjobs-sdk-1-1-0-alpha1/)。

微生良策
2023-03-14

如果不使用 WebJobs SDK 中的任何输入/输出属性(QueueTrigger、Blob、Table 等),则必须使用 NoAutomaticTrigger 属性来修饰作业,以便 SDK 识别。

 类似资料:
  • 未找到作业函数。试着公开你的作业类和方法。如果您使用的是绑定扩展(例如Azure存储、ServiceBus、定时器等),请确保在启动代码中调用了扩展的注册方法(例如builder.AddAzureStorage()、builder)。AddServiceBus(),生成器。AddTimers()等)。 当我们将.netframework从4.7升级到.netcore 3.0时,问题开始出现

  • 本文向大家介绍MySQL如何创建触发器,包括了MySQL如何创建触发器的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了MySQL创建触发器的具体代码,供大家参考,具体内容如下 先来个实例: 实例解析:   先创建触发器中待存储的表t_attendance   DELIMITER $   意思是告诉mysql下文执行语句以“$”结束,如果没有这句,下面语句会出错,mysql无法判断哪句

  • 我可以从AWS SDK创建lambda函数: 但是我如何指定这个函数应该在S3上传时触发呢?

  • 有一个Azure函数,当HTML文件被放入Azure blob存储时会被触发。该函数打开HTML文件,并将其转换为JSON。有一小部分触发文件(不到1%)会导致以下异常: Microsoft.WindowsAzure.Storage.StorageException blob的放置触发了第二个函数,它改变了文件的内容类型,但是我不确定这是否会影响第一个函数打开文件的能力。 怎样做才能让Azure函

  • 我试图在Azure portal中开发一个Azure函数(node.js),它在创建文档时由Cosmos DB触发。Azure文档说,要做到这一点,首先我必须从模板中选择“Cosmos db触发器”,但没有模板出现在我的函数中...只出现HTTP an计时器触发器选项。我想使用CosmosDB和IoTHUB作为触发器,输入输出。有没有被忽略的要求?为什么我没有更多的触发器选项?需要指导。

  • 主要内容:基本语法,创建 BEFORE 类型触发器,创建 AFTER 类型触发器触发器是与 MySQL 数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 基本语法 在 MySQL 5.7 中,可以使用 CREATE TRIGGER 语句创建触发器。 语法格式如下: CREATE <触发器名> < BEFORE | AFTER > <INSERT | UPDATE | DELETE > ON <