我需要创建一个将在每个月的最后一天运行的 cron 表达式。我需要这个来安排 webjob。
我正在使用这个表达式,但 webjob 并没有L用于查找每个月的最后一天。
"0 0 11 L * *"
谢谢。
根据你的描述,我这边也查了一下这个问题。简单的方法,首先我在azure门户上进行了测试,如下:
注意:根据我的测试,特殊字符(?, L, W){day}是无效的。
另外,我用表达式在我这边运行了 webjob 0/5 * * L * *,然后出现以下错误:
未处理的异常:Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException:索引方法“Functions.CronJob”时出错 ---> System.Reflection.TargetInitationException:调用目标已引发异常。---> NCrontab.CrontabException: 'L' 不是有效的 [Day] crontab 字段表达式。---> NCrontab.CrontabException: 'L' 不是有效的 [Day] crontab 字段值。它必须是 1 到 31(包含所有端点)之间的数值。
然后我按照这个示例TimerSamples.cs进行操作,发现我们只能重写内置的DailySchedule和WeeklySchedule,但它们无法满足您的要求,我假设您可能需要构建自定义时间表继承TimerSchedule来实现您的目的。
AFAIK,除了使用您的 Web 作业设置 cron 表达式之外,我们还可以利用 Azure Scheduler 按某个计划触发我们的 Web 作业。这是我的测试,你可以参考一下:
将您的网络作业配置为手动触发
登录到azure 门户,添加Azure Scheduler,然后配置指向允许触发的 webjob 端点的操作设置。有关更多详细信息,您可以参考本教程中有关添加调度程序作业的部分
然后按如下方式配置计划:
此外,为了获得完整的 cron 表达式支持,您可以在Azure/azure-webjobs-sdk-extensions的问题上添加反馈。