2016-09-06 11 views
3

Я использую Hangfire 1.6.4 для моего проекта .NET Core.Hangfire 1.6.4 .NET Core - Не удалось разрешить зависимости

Вот мой график контроллер:

[HttpPost] 
    public void Post([FromBody]EmailSchedulerDto emailSchedulerDto) 
    { 
     // test only 
     emailSchedulerDto = new EmailSchedulerDto 
     { 
      UserId = "", 
      Email = "[email protected]", 
      StoresId = new List<string>(), 
      CronPattern = "* * * * *" 
     }; 
     RecurringJob.AddOrUpdate(
      () => 
       _emailScheduler.ScheduleEmail(emailSchedulerDto.UserId, emailSchedulerDto.Email, 
        emailSchedulerDto.StoresId), emailSchedulerDto.CronPattern); 
    } 

Но у меня есть ошибка во время выполнения задания:

// Job ID: #183 
using MyProject.Services.Email; 

var emailScheduler = Activate<EmailScheduler>(); 
await emailScheduler.ScheduleEmail(
    "", 
    "[email protected]", 
    FromJson<IEnumerable`1>("[]") 
storesId 
); 

System.InvalidOperationException

Нет услуг для типа «MyProject.Services. Email.EmailScheduler 'зарегистрирован.

Я уже зарегистрирован ContainerJobActivator как это:

public class ContainerJobActivator : JobActivator 
{ 
    private readonly IServiceProvider _serviceProvider; 

    public ContainerJobActivator(IServiceProvider serviceProvider) 
    { 
     _serviceProvider = serviceProvider; 
    } 

    public override object ActivateJob(Type type) 
    { 
     return _serviceProvider.GetService(type); 
    } 
} 

А в классе запуска:

GlobalConfiguration.Configuration.UseActivator(new ContainerJobActivator(services.BuildServiceProvider())); 

Что не так?

Спасибо!

+0

Связанный ответ [Зависимость от зависимостей от Hangfire с .net core] (https://stackoverflow.com/a/44477843/4 28061) – Soren

ответ

4

Вот что помогло мне: 1. Регистрация замедленного воспламенения так:

services.AddHangfire(configuration => configuration 
         .UseSqlServerStorage("connection string here")); 

2. И еще одна вещи (должен быть первым):

services.AddScoped<EmailScheduler, EmailScheduler>(); 

Я не мечу этот ответ как правильный ответ в течение некоторого времени ... Но если не будет других ответов, я сделаю)

+0

Какие услуги класса или где я могу его взять? – Dmitry