【问题标题】:Hangfire not running tasks although they are in databaseHangfire 没有运行任务,尽管它们在数据库中
【发布时间】:2014-10-22 06:16:10
【问题描述】:

我不确定 Hangfire 发生了什么,但调用 BackgroundJob.Enqueue() 会将作业添加到数据库中作为“已计划”,但似乎没有任何反应。方法代码似乎没有运行。在调试器中没有断点被击中,并且在我的内部作业的日志中没有任何内容被打印出来。

 JobStorage.Current = new SqlServerStorage("DefaultConnection");

【问题讨论】:

    标签: c# hangfire


    【解决方案1】:

    我遇到了类似的问题。就我而言,问题是我的依赖注入没有正确连接。

    只有在我转到 Hangfire Dashboard -> Scheduled Jobs 并单击我的工作以查看更多详细信息后,我才能看到确切的异常消息,即“无法创建接口 'some_interface'”。

    检查您的作业是否已正确初始化,以及 Hangfire 仪表板的“已安排”部分是否有错误。

    【讨论】:

    • 你在 DI 中使用了什么?我们在使用 StructureMap 时遇到了同样的问题,想知道您是如何解决它的。
    • 我使用的是 Ninject。我从来没有解决过根本问题,只是稍微改变了我的应用程序的结构。我现在使用 hangfire 在 WCF 服务中调用作业,我已经连接了我的 DI。
    • 这也帮助我找到了我的问题,这是一个数据库错误(字符串将被截断)。不太清楚为什么这项工作不会进入“失败”的桶。
    • 这可能是因为默认情况下,Hangfire 会重新安排要再次执行的作业。只有在他们失败了一定次数(我认为是 10 次)之后,他们才会转移到失败的存储桶中。
    【解决方案2】:

    祝你有美好的一天。 由于计划重复作业可能未运行,Hangfire 服务器可能未运行

    要设置服务器,请按照以下步骤操作:

    要设置 Hangfire 服务器,您需要通过实现 IRegisteredObject 接口来实现 HangfireBootstrapper

    类执行后需要在global.asax或应用程序的启动文件中启动和停止Hangfire服务器。

    更详细的实现请参考link

    【讨论】:

    • 虽然这在理论上可以回答这个问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。有关如何编写更好“基于链接”的答案的说明,请参阅here。谢谢!
    • 感谢 Thom,您的编辑很棒,您的编辑值得赞赏
    猜你喜欢
    • 1970-01-01
    • 2018-07-01
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多