私はHangfireを使用してジョブを実行しています.1日後に成功したジョブがデータベースから削除された動作を変更したいと思います。年。Hangfire成功ジョブの有効期限属性が正しく設定されていない
はthis SO questionと同じであり、このthread、の指示に従い、私はクラス作成しました:
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 Web 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) -hangfire) – Alex
@Alexこれは重複していません。 OPの実装は、その質問の解決策に似ていますが、まだ問題があります。 –