2016-09-19 6 views
4

を登録されていない、私は私のASP.NETコアアプリでHangfireを使用したい、府私はエラーメッセージ持っている:独自のサービス - タイプのためのサービスが

を入力されていませんサービスは

を登録されていません サービス:Startup.csで

public class MyService: IMyService 
{ 
    private readonly MyContext _context; 

    public MyService(MyContext context) 
    { 
     _context = context; 
    } 

    // some code 
} 

public interface IMyService 
{ 
     //some code 
} 

は、ここに私のコードです

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddSingleton<IMyService, MyService>(); 
    // another services 
} 

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IServiceProvider serviceProvider) 
{ 
    app.UseHangfireDashboard(); 
    app.UseHangfireServer(); 

    RecurringJob.AddOrUpdate(() => serviceProvider.GetService<IMyService>().MyMethod(), Cron.Minutely); 
} 

サービスが登録されていない理由はありますか?

+0

ここで 'IRssService'は' IMyService'と同じであるはずですか? – DavidG

+0

@DavidGはい、同じです。私の間違い。私はすでにそれを修正しました。 – Cieja

+1

問題はこの質問と同じである可能性が最も高いですが、MyContextはスコープとして登録されているか、まったく登録されていないhttp://stackoverflow.com/questions/39369054/usermanager-dbcontext-already-disposed-in-middleware/39369908#39369908 –

答えて

8

Hangfireはすでに依存関係注入を行っているため、オブジェクトを取得するのにserviceProvider.GetServiceを使用する必要はありません。代わりに、適切なHangfire関数を使用して依存関係を解決させます。

RecurringJob.AddOrUpdate<IMyService>(s => s.MyMethod(), Cron.Minutely); 
+0

BackgroundJob.Enqueue 'BackgroundJob.Enqueue (ms => ms.MyMethod());' –

関連する問題