我正在尝试将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");
}
我需要什么才能使此代码有效?
答案 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类后,触发就好了。