Hangfire-每次代码更改时都会出现新服务器

Hangfire-每次代码更改时都会出现新服务器,hangfire,Hangfire,我不熟悉Hangfire。我让它在开发机器上运行,但每次我更改代码并运行应用程序(asp.net Core 2 MVC)时,仪表板上的列表中都会出现一个新服务器 我在文档或示例文件中找不到任何与此相关的内容。我读过关于取消令牌的文章,但这些令牌似乎是用于有意关闭请求,而不是代码更新 这是预期的行为吗?我是否希望在每次更新代码时在IIS中手动重新启动应用程序(显然,在服务器上比在开发人员机器上更重要) 谢谢。找到了一个解决这个问题的方法,它对我很有效。归功于伊霍克特 TLDR 我知道这是一个非常古

我不熟悉Hangfire。我让它在开发机器上运行,但每次我更改代码并运行应用程序(asp.net Core 2 MVC)时,仪表板上的列表中都会出现一个新服务器

我在文档或示例文件中找不到任何与此相关的内容。我读过关于取消令牌的文章,但这些令牌似乎是用于有意关闭请求,而不是代码更新

这是预期的行为吗?我是否希望在每次更新代码时在IIS中手动重新启动应用程序(显然,在服务器上比在开发人员机器上更重要)


谢谢。

找到了一个解决这个问题的方法,它对我很有效。归功于伊霍克特

TLDR

我知道这是一个非常古老的话题,但我也遇到了类似的问题。我想把我的贡献贡献贡献给因服务器关闭而中止的工作。如果自动重试被禁用(尝试次数=0),或者作业由于服务器关闭而失败,并且超过了最大尝试次数,则可能会遇到此问题。不幸的是,这导致新作业无法开始处理,直到手动删除或重新排队中止的作业

基本上,我采用以下方法自动处理中止的作业:在启动期间和初始化BackgroundJobServer之后,我使用MonitoringApi获取所有当前正在处理的作业。如果有,我将遍历每一个并调用BackgroundJob.Requeue(jobId)。以下是代码,供参考:


目前面临同样的问题。。你找到解决办法了吗?我发现他们往往在不太长的时间后就自己离开了?!谢谢-是的,看起来他们好像要超时了。
var monitor = Hangfire.JobStorage.Current.GetMonitoringApi();                
if (monitor.ProcessingCount() > 0)
{                    
    foreach (var job in monitor.ProcessingJobs(0, (int)monitor.ProcessingCount()))
    {
        BackgroundJob.Requeue(job.Key);                        
    }
}