为什么我的Azure WebJob应用程序中的TimerTrigger功能未被检测到?

时间:2016-11-30 17:53:09

标签: c# azure azure-webjobs

我有一个Azure WebJob控制台应用程序,它不会识别我已设置的TimerTrigger

我有Visual Studio生成的默认Program.cs

class Program
{
  static void Main()
  {
    var config = new JobHostConfiguration();

    if (config.IsDevelopment)
    {
      config.UseDevelopmentSettings();
    }

    var host = new JobHost();

    host.RunAndBlock();
  }
}

我将新功能添加到Functions.cs

public static void MyFunction([TimerTrigger("0 */2 * * * *",
                                            RunOnStartup = true)]
                              TimerInfo timerInfo,
                              TextWriter log)
{
  log.WriteLine("MyFunction started!");
}

(我安装了WebJobs.Extensions NuGet包,所以我的代码编译得很好。)

我还添加了这一行:

config.UseTimers();

this answer中提及的Main函数,但出于某种原因,我的新函数仍未被触发。

当我启动应用程序时,我看到了这个输出:

Found the following functions:
MyNamespace.Functions.ProcessQueueMessage
Job host started

所以它没有看到我的新功能。

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:10)

在将我的Program.cs的内容与其他人在线发布的内容(包括the TimerTrigger docs)进行比较后,我发现了一个小小的差异。

Main函数中,我更改了:

var host = new JobHost();

为:

var host = new JobHost(config);

它有效。我确信之前我没有改变过,所以显然这是Azure WebJob模板中的一个错误。