首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hangfire Cron表达式无效

Hangfire Cron表达式无效
EN

Stack Overflow用户
提问于 2017-05-24 13:19:06
回答 1查看 8.5K关注 0票数 2

我正在使用Hangfire,我想为我的RecurringJobs描述不同的场景。但我无法达到我正在寻找的目标,而且如果CRON已经被限制了,那么Hangfire使用的CRON就更多了。

我继续阅读Hangfire文档,我发现一个类似于表达式的更复杂的表达式,而不是默认支持的Hangfire表达式。但它们甚至不兼容,例如,Hangfire只有分钟、小时、月、日、日,但如果我使用的是L还是?在这一天,就像它在文档中说的那样,它不起作用。我有这个错误,这个表达式16 14 L ? ?的错误如下

代码语言:javascript
复制
InnerException = {"'L' is not a valid [Day] crontab field value. It must be a numeric value between 1 and 31 (all inclusive)."}

来自Hangfire的CRON有以下方法:Monthly(int day);,如果我选择31,会发生什么?它还会在二月或四月这样的月份运行,例如在每个月的最后一天?还是我需要做些额外的事情来实现它?

这样怎么回事?我似乎无法定义用户选择的一天的条件是31,运行后台作业总是在这个月的最后一天。我甚至不谈论29天或30天,这也是一个特殊的原因,我总是用这个月的最后一天来处理背景工作。

我想使用来自Hangfire.CRON的月份方法,但我不认为它会以我想要的方式来处理29、30和31天。

您是否确认Hangfire Cron不使用文档引用的Cron表达式,以及是否有任何方法实现我正在寻找的目标?还有,有什么建议的教程或者什么东西可以帮我吗?我一直在读https://github.com/atifaziz/NCrontab,我认为它是Hangfire使用的,但是它没有多大帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-24 16:16:00

关于NCrontab,你是对的。Hangfire使用它,所以您应该确保这个库支持您的cron表达式。这样做有两个简单的选择:

  • C#交互式窗口(如NCrontab自述,或者您可以使用示例)
  • 在线cron可视化器(如https://crontab.guruhttp://cron.schlitt.info)

Cron.Monthly(31)被转换为0 0 31 * *,只有当月有31日时才会触发作业。

若要始终在一个月的最后一天运行后台作业,请添加三个单独的作业:

代码语言:javascript
复制
0 0 30 4,6,9,11        *
0 0 31 1,3,5,7,8,10,12 *
0 0 28 2               *

在这个月的最后一天运行Cron作业

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44159586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档