2016-07-27 8 views
2

ServiceStackサービスからHangfireバックグラウンドジョブを開始する方法はありますか? 私はすでにServiceStackサービスを解決できるMVC内からジョブを開始することができましたが、ServiceStack内でこれを実行できるようにしたいと考えていました。ServiceStackでHangfireを使用する

+0

また、[Hangfire support forums](htt ps://discuss.hangfire.io/)。 – mythz

答えて

3

もう少し調査した後、私はこの投稿に出会ったsetup example without owin?

1つの回避策は、Hangfire Nugetパッケージ全体をインストールするのではなく、Owinパッケージの参照のみを必要とするHangfire.CoreとHangfire.SqlServer(またはそれぞれのストレージオプション)だけをインストールすることです。唯一の欠点は、Hangfire Dashboardを使用できないことです。

その後、次のコードをHangfireと任意のジョブを開始:また

JobStorage.Current = new SqlServerStorage("connection string"); 
    var server = new BackgroundJobServer(); 
    server.Start(); 

    RecurringJob.AddOrUpdate(() => System.Diagnostics.Debug.WriteLine("No OWIN"), Cron.Minutely); 

あなたがHangFire JobActivatorためServiceStack Funqを使用することができます。

JobActivator.Current = new FunqJobActivator(container); 

次のようにFunqJobActivatorを作成した後:

public override object ActivateJob(Type jobType) 
    { 
     var resolved = _container.TryResolve(jobType); 

     if (resolved == null) 
     { 
      foreach (Type it in jobType.GetInterfaces()) 
      { 
       resolved = _container.TryResolve(it); 
       if(resolved != null)break; 
      } 
     } 

     return resolved; 
    } 
+0

RegisterAutoWiredAs 登録をサポートするようにFunqJobActivatorを更新しました。 – gjspaho

関連する問題