自己的服务 - 没有注册类型的服务

Own service - no service for type has been registered

我想在我的 ASP.NET 核心应用程序中使用 Hangfire,但我收到错误消息:

No service for type has been registered

这是我的代码: 服务:

public class MyService: IMyService
{
    private readonly MyContext _context;

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

    // some code
}

public interface IMyService
{
      //some code
}

在Startup.cs中:

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);
}

您知道为什么服务没有注册吗?

Hangfire 挂钩到已经存在的依赖项注入中,因此您无需使用 serviceProvider.GetService 来获取您的对象。而是使用适当的 Hangfire 函数让它解决依赖关系:

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