C# 自有服务-尚未注册类型的服务

C# 自有服务-尚未注册类型的服务,c#,asp.net,dependency-injection,asp.net-core,hangfire,C#,Asp.net,Dependency Injection,Asp.net Core,Hangfire,我想在我的ASP.NET核心应用程序中使用Hangfire,但我收到错误消息: 尚未注册类型的服务 这是我的密码: 服务: 在Startup.cs中: public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IMyService, MyService>(); // another services } public void Configure(IAppli

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

尚未注册类型的服务

这是我的密码: 服务:

在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);
}
public void配置服务(IServiceCollection服务)
{
services.AddSingleton();
//其他服务
}
public void Configure(IApplicationBuilder应用程序、IHostingEnvironment环境、iLogger工厂、IServiceProvider服务提供商)
{
app.UseHangfireDashboard();
app.UseHangfireServer();
RecurringJob.AddOrUpdate(()=>serviceProvider.GetService().MyMethod(),Cron.Minutely);
}

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

Hangfire钩住已经存在的依赖注入,这样你就不需要使用
serviceProvider.GetService
来获取你的对象。而是使用适当的Hangfire函数来解决依赖关系:

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

这里的
IRssService
应该与
IMyService
相同吗?@DavidG是的,它是相同的。我的错误。我已经解决了。问题很可能与此问题中的问题相同,MyContext已注册为作用域或根本未注册。您不能为此使用正确的Hangfire方法吗?类似这样:
RecurringJob.AddOrUpdate(s=>s.MyMethod(),Cron.Minutely)@DavidG是的,它能工作。谢谢!这也适用于BackgroundJob.Enqueue
BackgroundJob.Enqueue(ms=>ms.MyMethod())
RecurringJob.AddOrUpdate<IMyService>(s => s.MyMethod(), Cron.Minutely);