Webjob 始终发布为连续而不是触发

Webjob always publishes as Continuous and not Triggered

我有一个 Azure WebJob,我从 visual studio 2017 年发布到标准 S1 应用服务,WebJob 应该由 CRON 触发,但始终发布为连续,我无法弄清楚我做错了什么(其他两个 WebJobs 发布正常)

我在应用程序设置中将应用程序服务设置为 'Always On'

我在根目录中有一个 settings.job 文件和我的日程安排

{
     "schedule": "0 3 5 * * 1-5"
}

我的程序class

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
    }
}

您第一次选择 'Publish as a WebJob' 时,它会询问您是要连续还是按需(包括预定):

如果您选错了,只需删除“属性”下的 webjob-publish-settings.json,然后重试。

顺便说一句,您的代码过于复杂,因为您不必要地使用 WebJobs SDK。相反,您的代码可以简单地是:

    static void Main()
    {
        // Do Stuff
    }

您可以通过编辑 WebJob 项目的 Properties 文件夹中的 webjob-publish-settings.json 文件在 'Continuous' 和 'Triggered' 模式之间切换。

在此 json 文件中,您可以将 "runMode:" 设置为 Continuous OnDemand(已触发):

连续

按需

你在settings.job中设置了{ "is_singleton": true }了吗? 如果是这样,您不能 运行 多个 WebJob 实例。如果您发布并 运行 您的 WebJob 到 Azure 云,您永远不能 运行 它在本地,除非您使用不同的存储帐户。