具有Http触发函数的连续Azure WebJob

我目前有一个azure webjob,它可以执行从一个数据库到另一个数据库的每日同步,但是也希望添加手动触发同步的function。 我在webjob项目中设置了如下函数:

public static void SyncData([TimerTrigger("0 0 5 * * *", RunOnStartup = false)] TimerInfo timerInfo) { } [NoAutomaticTrigger] public static Task SyncAll(TraceWriter log){ } [NoAutomaticTrigger] public static Task SyncBranches(TraceWriter log){ } [NoAutomaticTrigger] public static Task SyncCustomers(TraceWriter log){ } [NoAutomaticTrigger] public static Task SyncInventory(TraceWriter log){ } 

我可以在webjob下的Kudu仪表板中看到这些函数,但我不确定如何使用MS文档( 此处 )中列出的http请求触发函数:

 http://.azurewebsites.net/api/ 

当我向该端点发出请求时,我收到了404响应 – 为了通过http请求手动触发这些function,我需要做什么?

谢谢,瑞恩

我们可以使用Kudu WebJob API来启动或停止连续作业

POST https:// {user}:{password} @ {sitename} .scm.azurewebsites.net / api / continuouswebjobs / {job name} / start

我们可以从Azure WebApp publishSetting文件中获取用户和密码信息。 我们可以从门户网站下载该文件

在此处输入图像描述

使用fiddler测试Rest API

在此处输入图像描述

注意 :如何创建Azurefunction请参考文档 。

更新:

有没有办法可以在连续工作中触发特定function?

根据我的经验,我无法找到一种方法或Rest API来直接触发连续作业中的特定function。

我的工作是我们可以使用Webjob QueueTrigger。 根据队列消息信息触发sepcificfunction。 我们可以使用QueueTrigger创建一个WebJob

以下是根据您的代码的详细步骤。

1.创建Azure存储队列以进行触发

在此处输入图像描述

2.创建一个Webjob项目并添加以下代码

  public static void SyncData([QueueTrigger("backup")] string logMessage, TextWriter logger) { Console.WriteLine($"Start time:{DateTime.Now}"); switch (logMessage.ToLower()) { case "syncall": SyncAll(logger); break; case "syncbranches": SyncBranches(logger); break; case "synccustomers": SyncCustomers(logger); break; case "syncinventory": SyncInventory(logger); break; default: Console.WriteLine("Default case"); break; } Console.Write($"Endtime:{DateTime.Now}"); } [NoAutomaticTrigger] public static Task SyncAll(TextWriter log) { Console.WriteLine("SyncAll :"+DateTime.Now); return null; //await Task.Delay(10); } [NoAutomaticTrigger] public static Task SyncBranches(TextWriter log) { Console.WriteLine("SyncBranches :" + DateTime.Now); return null; } [NoAutomaticTrigger] public static Task SyncCustomers(TextWriter log) { Console.WriteLine("SyncCustomers :" + DateTime.Now); return null; } [NoAutomaticTrigger] public static Task SyncInventory(TextWriter log) { Console.WriteLine("SyncInventory :" + DateTime.Now); return null; } 

3.使用Azure 存储队列REST API创建队列消息。

4.从控制台检查结果。

在此处输入图像描述

您正在查看Azurefunction的文档,但看起来您正在使用WebJobs(与Azurefunction不同)。

我建议使用Azure Functions,在这种情况下,您的场景变得更加直接。