我正在使用Hangfire來完成作業,並且我希望更改一天之後成功作業從數據庫中刪除的行爲 - 我希望將它們存儲爲年。設置Hangfire成功的作業失效屬性不起作用
繼此thread,這是相同this SO question的指示,我創建了一個類:
public class OneYearExpirationTimeAttribute : JobFilterAttribute, IApplyStateFilter
{
public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
{
context.JobExpirationTimeout = TimeSpan.FromDays(365);
}
public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
{
context.JobExpirationTimeout = TimeSpan.FromDays(365);
}
}
和我在Asp.net網頁API啓動類作爲一個全球性的過濾器進行註冊:
public class Startup
{
public void Configuration(IAppBuilder app)
{
// ... other stuff here ...
GlobalJobFilters.Filters.Add(new OneYearExpirationTimeAttribute());
GlobalConfiguration.Configuration.UseSqlServerStorage("HangFireDBConnection");
app.UseHangfireDashboard();
}
}
的網絡API是其中職位張貼的地方(即調用BackgroundJob.Enqueue(() => ...)
發生)。我沒有改變做實際工作的客戶的配置。
如果我現在發佈工作並且取得了成功,它仍然有每一天的到期,你可以在截圖,其中顯示,無論儀表板和中HangfireDb入口看到,
我在做什麼錯,或者我錯過了什麼?
看看最後回答https://discuss.hangfire.io/t/how-to-configure-the-retention-time-of-job/34/11你應該配置'SQLServerStorage'類 – Alex
可能[保留在Hangfire中執行超過1天的作業的歷史記錄]的副本(http://stackoverflow.com/questions/34450884/keep-history-of-jobs-executed-for-more-than-1-day-in - 大火) – Alex
@Alex這不是重複的。 OP的實現類似於該問題的解決方案,但仍然存在問題。 –