Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在启动时删除所有hangfire重复作业?_C#_Recurring_Hangfire - Fatal编程技术网

C# 如何在启动时删除所有hangfire重复作业?

C# 如何在启动时删除所有hangfire重复作业?,c#,recurring,hangfire,C#,Recurring,Hangfire,我正在考虑使用Hangfire作为重复作业的作业调度程序。因此,使用AddOrUpdate配置它们很简单,但是如何删除它呢?我不想在删除作业后用RecurringJob.removiefexists()污染我的代码,然后必须记得稍后删除它 是否有一种方法可以获取所有定期作业的列表,并在服务器启动时删除它们,这样我的代码每次都会重新添加它们?如果没有,有没有更好的办法 e、 g 应用程序版本1:添加了新的Hangfire重复作业做事1 应用程序版本2:添加了新的Hangfire重复作业Dosome

我正在考虑使用Hangfire作为重复作业的作业调度程序。因此,使用
AddOrUpdate
配置它们很简单,但是如何删除它呢?我不想在删除作业后用
RecurringJob.removiefexists()
污染我的代码,然后必须记得稍后删除它

是否有一种方法可以获取所有定期作业的列表,并在服务器启动时删除它们,这样我的代码每次都会重新添加它们?如果没有,有没有更好的办法

e、 g

应用程序版本1:添加了新的Hangfire重复作业
做事1

应用程序版本2:添加了新的Hangfire重复作业
Dosome2
Dosome3

应用程序版本3:删除了Hangfire重复作业
做点什么2


问题:该作业仍将存在于服务器上,错误为“无法加载类型…”,需要删除。

此作业稍晚,但希望它能帮助其他人。我也陷入了同样的境地。最后,这个问题的答案帮助了我

我使用
JobStorage
循环遍历所有定期作业,并依次删除每个作业,如下所示:

using (var connection = JobStorage.Current.GetConnection())
{
    foreach (var recurringJob in connection.GetRecurringJobs())
    {
        RecurringJob.RemoveIfExists(recurringJob.Id);
    }
}
我确信有更好的方法,但我找不到它

您可以使用以下代码:

var recurringJobs = Hangfire.JobStorage.Current.GetConnection().GetRecurringJobs();

            foreach (var item in recurringJobs)
            {
                RecurringJob.RemoveIfExists(item.Id);
            }
这很有帮助,但API似乎已经改变了。使用Hangfire 1.6.20,我需要从
StorageConnectionExtensions

using (var connection = JobStorage.Current.GetConnection()) 
{
    foreach (var recurringJob in StorageConnectionExtensions.GetRecurringJobs(connection)) 
    {
        RecurringJob.RemoveIfExists(recurringJob.Id);
    }
}

在MongoDB中,有关定期作业的数据存储在
hangfire.stateData
表中。清除此表可以帮助您。

需要使用Hangfire.Storage在文件顶部添加一个
,但是是的,这是我删除所有重复作业所需要的。谢谢由于StorageConnectionExtensions类是自解释的,GetRecurringJobs()方法是连接对象的扩展方法,因此无需通过静态扩展类调用它,请改用Connection.GetRecurringJobs()。此答案的副本已过时。@ChrisWeber,它适用于目前最新的1.7.18。我只粘贴了代码,没有做任何更改。