Sql server 停业

Sql server 停业,sql-server,.net-core,hangfire,Sql Server,.net Core,Hangfire,我在.NET核心应用程序中设置了HangFire。我有几个定期作业,设置为每15分钟运行一次。在集合表中,当调度正常工作时,您可以以历元格式查看下一个运行时: 然而,日程安排似乎是随机的,看起来更像这样: 根据@Satpal的建议,我连接了仪表板,这为情况提供了更多信息 System.TypeLoadException Could not load type 'X.API.Controllers.YController' from assembly 'X.API, Version=1.0.0

我在.NET核心应用程序中设置了HangFire。我有几个定期作业,设置为每15分钟运行一次。在集合表中,当调度正常工作时,您可以以历元格式查看下一个运行时:

然而,日程安排似乎是随机的,看起来更像这样:

根据@Satpal的建议,我连接了仪表板,这为情况提供了更多信息

System.TypeLoadException
Could not load type 'X.API.Controllers.YController' from assembly 'X.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

System.TypeLoadException: Could not load type 'X.API.Controllers.YController' from assembly 'X.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
   at System.Reflection.RuntimeAssembly.GetType(QCallAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type, ObjectHandleOnStack keepAlive, ObjectHandleOnStack assemblyLoadContext)
   at System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
   at Hangfire.Common.TypeHelper.TypeResolver(Assembly assembly, String typeName, Boolean ignoreCase)
   at System.TypeNameParser.ResolveType(Assembly assembly, String[] names, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark)
   at System.TypeNameParser.ConstructType(Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark)
   at System.TypeNameParser.GetType(String typeName, Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark)
   at System.Type.GetType(String typeName, Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError)
   at Hangfire.Common.TypeHelper.DefaultTypeResolver(String typeName)
   at Hangfire.Storage.InvocationData.DeserializeJob()
我知道定期作业调用的方法是可用的,并且当前正在工作,因为手动重新安排一个失败的作业已按预期工作。我怀疑这些方法在部署更新时不可用——应用程序服务重新启动的时间可能足以导致作业失败和死亡。我相信我在Hangfire的文档中找到的一节支持了这一点,其中指出:

10次重试后,后台处理将停止,延迟修饰符将增加

关于这一点,我有两个问题:

  • 通知作业失败的最佳方式是什么?一个快速的谷歌似乎建议将日志添加到Hangfire,并使用错误日志事件触发电子邮件?有更好的办法吗
  • 有没有办法自动重新触发由于作业失败而停止的重复作业

  • 谢谢

    根据问题指南,请不要发布代码、数据、错误消息等的图像-复制或在问题中键入文本。请保留图像用于图表或演示渲染错误,这些错误无法通过文本准确描述。如果您集成了仪表板,查看是否记录了任何错误。@Satpal感谢您的建议-我确实查看了仪表板,它进一步说明了情况-请参阅更新的帖子。您是否使用控制器操作方法作为作业方法?由于您正在获取
    ,因此无法加载类型“X.API.Controllers.YController”
    。我强烈建议废除这种做法。将应用程序和特定业务层方法重构为计划作业。@Satpal我正在使用控制器方法,是的。Hangfire能够成功地执行这些方法。作业的创建方式如下->RecurringJob.AddOrUpdate(“TaskX”,()=>ExecuteTask(0),“*/15****”;