我有一个下面的WebJob项目,试图在其中部署TimerTrigger WebJob函数,但是在Visual Studio 2017中通过“发布为Azure WebJob ...”部署它时,无法使其按计划运行。
Program.cs
class Program
{
static void Main()
{
var config = new JobHostConfiguration();
if (config.IsDevelopment)
{
config.UseDevelopmentSettings();
}
config.UseTimers();
var host = new JobHost(config);
host.RunAndBlock();
}
}
Functions.cs
public class Functions
{
public static async Task ProcessAsync([TimerTrigger("0 */3 * * * *")] TimerInfo timerInfo, TextWriter log)
{
...
}
}
webjob-publish-settings.json
{
"$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
"webJobName": "TestWebJob",
"runMode": "OnDemand"
}
Settings.job
{ "schedule": "0 */3 * * * *" }
关于此的文档几乎不存在,并且令人困惑为何Azure支持Scheduled CRON TimerTrigger,但在部署时实际上并未将它们包括在内。
这可能吗?
答案 0 :(得分:1)
如果您手动创建了计划Web作业,我想您可能会发现它将生成一个settings.job
来设置schedule
。然后,门户中的 SCHEDULE schedule
并显示它。而且,如果您使用VS2017部署TimerTrigger Webjob,则因为定义了TimerTrigger函数,它不会生成此文件。
然后我做了一些测试来展示它。首先,我使用TimerTrigger创建一个webjob并部署它,它将显示与使用n/a
SCHEDULE 相同的结果。然后,我终止了webjob进程并上传了settings.job,然后刷新(而不是在门户网站中刷新)页面,然后 SCHEDULE 更改为CRON表达式。如果删除该文件,它将恢复原样。
this
对于日志,我认为这也是由settings.job引起的,如果您拥有此文件,它将每隔x分钟触发一次该webjob,如果您没有此文件,则将在每隔x分钟触发一次webjob。网络工作。
如果您仍有疑问,请告诉我。
答案 1 :(得分:0)