我有一个ASP.NET MVC5应用程序在Azure中作为App Service运行,并希望安排WebJob每小时执行一次控制台应用程序。
在控制台应用程序中,我将webjob-publish-settings.json
文件定义为:
{
"$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
"webJobName": "EpisodeUpdater",
"startTime": "2017-05-01T00:00:00-08:00",
"endTime": "2020-06-01T00:00:00-08:00",
"jobRecurrenceFrequency": "Hour",
"interval": 1,
"runMode": "Scheduled"
}
当我查看Azure门户时,WebJob的类型似乎设置为已触发 - 当我手动启动它时,作业将成功运行,但它不会每小时执行一次。 / p>
有人能看出为什么没有正确安排WebJob吗?
答案 0 :(得分:6)
在某种程度上,没有计划作业。计划的WebJob只是一个由计时器触发的按需/触发WebJob。现在这个计时器可以是Azure Scheduler(这是VS工具用来创建的)或Kudu中的内置调度程序。
要使用内置调度程序,请在项目的根目录中创建名为settings.job
的文件,并将其作为内容:
{
"schedule": "0 0 * * * *"
}
那将每小时运行一次。它使用CRON表达式,在这种情况下定义它应该在秒和分钟为零时始终运行。现在这需要在应用程序中启用Always On。
文档:https://docs.microsoft.com/en-gb/azure/app-service/web-sites-create-web-jobs#CreateScheduledCRON