2017-02-27 10 views
4

私は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のエントリの両方を示す、スクリーンショットで見ることができるように、それはまだ一日の有効期限があり、

enter image description here

私は何が間違っているのですか、何が欠けていますか?

+0

最後の回答を見てくださいhttps://discuss.hangfire.io/t/how-to-configure-the-retention-time-of-job/34/11あなたは 'SQLServerStorage'クラスを設定する必要があります – Alex

+0

可能[Hangfireで1日以上実行されたジョブの履歴を保持]の複製(http://stackoverflow.com/questions/34450884/keep-history-of-jobs-executed-for-more-than-1-day-in) -hangfire) – Alex

+1

@Alexこれは重複していません。 OPの実装は、その質問の解決策に似ていますが、まだ問題があります。 –

答えて

1

私の間違いは、属性が間違ったアプリケーションに設定されていることでした。私が質問に述べたように、私はジョブが投稿されているasp.net Web APIのstartup.csファイルにフィルタを追加しました。

代わりに、私は仕事が実行されているコンソールアプリケーションで設定を追加している必要があり、すなわち、私のコンソールアプリは

static void Main(string[] args) 
{ 
    GlobalConfiguration.Configuration.UseSqlServerStorage("HangFireDBConnection"); 
    GlobalJobFilters.Filters.Add(new OneYearExpirationTimeAttribute()); 
    // ... more stuff ... 
} 

で始まるそれからそれは動作します。 Hangfireのドキュメントは、フィルタを設定する場所を少し明確にすることができます。

+1

はいこの情報(そのハングファイアは実際にはIISで実行されていない)非常に便利だっただろう... –

関連する問題