2016-07-27 56 views
2

有沒有辦法從ServiceStack服務啓動Hangfire後臺作業? 我已經能夠從MVC內部開始工作,在那裏我可以解決ServiceStack服務,但我希望能夠從ServiceStack內部完成此任務。使用Hangfire和ServiceStack

+0

您可能會在[Hangfire支持論壇](https PS://discuss.hangfire.io/)。 – mythz

回答

3

經過一番更多的調查,我遇到了這個職位setup example without owin?

解決方法之一是不安裝整個Hangfire nuget包,而只安裝Hangfire.Core和Hangfire.SqlServer(或相應的存儲選項),它只需要引用Owin包。唯一的缺點是你不能使用Hangfire儀表板。

然後開始遲髮型並通過下面的代碼的任何作業:

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

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

此外,您可以使用ServiceStack Funq爲遲髮型JobActivator:

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

我更新了FunqJobActivator以支持RegisterAutoWiredAs 註冊。 – gjspaho