我有一个Azure WebJob,我将从Visual Studio 2017发布到标准S1应用程序服务,WebJob应该由CRON触发,但总是发布为Continuous,我无法弄清楚我做错了什么(另外两个WebJobs发布细)
我的根目录中有一个settings.job文件和我的日程表
{
"schedule": "0 3 5 * * 1-5"
}
我的课程课程
namespace EventPushUpdater
{
using Microsoft.Azure.WebJobs;
using MBL.AzureKeyVaultHelpers;
internal class Program
{
private static void Main()
{
Properties.Settings s = Properties.Settings.Default;
IKeyVault kv = new KeyVaultHelper(s.ClientId, s.ClientKey, s.KeyVaultRoot);
var config = new JobHostConfiguration();
config.DashboardConnectionString = kv.GetSecretValue(s.DashboardConnectionString);
config.StorageConnectionString = kv.GetSecretValue(s.DashboardConnectionString);
var host = new JobHost(config);
host.Call(typeof(Functions).GetMethod("PushEvents"), new { keyVault = kv });
}
}
}
正在调用的函数
public class Functions
{
[NoAutomaticTrigger]
public static void PushEvents(IKeyVault keyVault)
{
// do stuff
}
}
答案 0 :(得分:5)
当您第一次选择“发布为WebJob”时,它会询问您是否需要连续或按需(包括已安排):
如果选错了,只需在“属性”下删除webjob-publish-settings.json
,然后重试。
顺便说一句,您的代码过于复杂,因为您不必使用WebJobs SDK 。相反,您的代码可以简单地为:
static void Main()
{
// Do Stuff
}
答案 1 :(得分:4)
您可以在'连续'之间切换和'触发'通过编辑WebJob项目的Properties文件夹中的webjob-publish-settings.json文件来模式。
在此json文件中,您可以将" runMode:" 设置为连续或 OnDemand (已触发):
答案 2 :(得分:0)
您是否在{ "is_singleton": true }
中设置了settings.job
?
如果是这样,则您不能运行多个WebJob实例。如果将WebJob发布并运行到Azure云,则除非使用其他存储帐户,否则永远不能在本地运行它。