2016-07-27 4 views
2

Есть ли способ запуска фоновых заданий Hangfire из сервисов ServiceStack? Я уже мог запускать задания из MVC, где я могу разрешать службы ServiceStack, но я хотел иметь возможность сделать это из ServiceStack.Использование Hangfire с ServiceStack

+0

Вы также можете получить дополнительную информацию об этом на форумах поддержки [Hangfire support] (htt пс: //discuss.hangfire.io/). – mythz

ответ

3

После некоторого расследования я наткнулся на это сообщение setup example without owin?.

Одним из обходных путей было бы не устанавливать весь пакет Nanget Hangfire, а только 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

Смежные вопросы