Azure WebJobs TimerTrigger未触发

时间:2016-01-07 21:46:52

标签: azure azure-webjobs azure-webjobssdk

我正在尝试将WebJob作为控制台应用程序运行,当我添加RunOnStartup = true时,它可以工作,但我需要它只适用于TimerTrigger。

这是我的代码

public static void Main()
{
  JobHostConfiguration config = new JobHostConfiguration();
  config.UseTimers();
  JobHost host = new JobHost(config);
  host.RunAndBlock();
} 

public static void TimerJob([TimerTrigger("0 0 8 * * *")] TimerInfo timerInfo)
{
    Console.WriteLine("Job Work");
}

我需要什么才能使此代码有效?

3 个答案:

答案 0 :(得分:2)

首先,按照here in the Local Development section所述添加 JobHostConfiguration跟踪。否则您将无法看到控制台文本。如果您在本地运行,也可以始终设置断点。

请记住,在本地运行时,在Azure或您的计算机时区上运行时,TimerTrigger会使用 Web App时区。要定义Web App时区,请按these steps

答案 1 :(得分:2)

此行为是由TimerTrigger中的 v1.0.1 版本中已修复的问题引起的,该版本现已在Nuget上发布。

问题在于我们在安排事件时在内部使用 UTC时间,而不是像您期望的那样本地时间。虽然这可能会在本地运行时造成混淆,但您的作业仍可按计划在Azure中正确运行。

但是,此问题现已修复。

答案 2 :(得分:2)

这可能不是您特定问题的答案,但它回答了同样的问题。我注意到它在Program类中找不到TimerTrigger函数。在运行它时,我得到了

  

应用了开发设置

     

找不到工作职能。尝试公开您的工作类和方法。如果您正在使用绑定扩展(例如ServiceBus,Timers等),请确保您已在启动代码中调用扩展的注册方法(例如config.UseServiceBus(),config.UseTimers()等)。

     

工作主持人已开始

将它们放入Function类后,触发就好了。