2016-09-06 10 views
3

.NET CoreプロジェクトにHangfire 1.6.4を使用しています。Hangfire 1.6.4 .NETコア - 依存関係を解決できませんでした

は、ここに私のスケジュールコントローラです:

[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

関連答え[ネットコアでのハングファイア依存性注入](https://stackoverflow.com/a/44477843/4 28061) – Soren

答えて

4

は私のために助けたものです:

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

2.そして、もう一つ(最初にする必要があります):このような 1.登録Hangfire

services.AddScoped<EmailScheduler, EmailScheduler>(); 

私はマークしませんこの答えはしばらくの間正答として... しかし、別の答えがなければ、私はします)

+0

私はどのようなクラスのサービスを利用できますか? – Dmitry

関連する問題