首页 文章

Hangfire依赖注入

提问于
浏览
1

在我的项目中,我遇到了后台Job的问题 . 我正在使用Hangfire和默认的.Net Core Dependency注入 .

Startup.cs

ConfigureServices:

services.AddTransient<IAuthorizable, AuthorizeService>();
services.AddTransient<IEditable, ConfigureService>();
services.AddTransient<IRequested, RequestService>();
services.AddTransient<INotified, NotificationService>();
services.AddHangfire(x => x.UseSqlServerStorage("ConnectionString"));

配置:

app.UseHangfireDashboard();
app.UseHangfireServer();

当我的Job尝试运行时,我收到此错误:

System.InvalidOperationException:没有注册类型为“Mapper.Services.RequestService”的服务 .

我做错了什么?

1 回答

  • 0

    DI知道如何通过提供 RequestService 来处理 IRequested . 但这是针对要求 IRequested 的课程 . 它不知道如何直接处理要求 RequestService 的类 .

    因此,根据错误消息,您还需要向服务注册 RequestService .

    services.AddTransient<IAuthorizable, AuthorizeService>();
    services.AddTransient<IEditable, ConfigureService>();
    services.AddTransient<IRequested, RequestService>();
    services.AddTransient<RequestService, RequestService>(); //<-- 
    services.AddTransient<INotified, NotificationService>();
    services.AddHangfire(x => x.UseSqlServerStorage("ConnectionString"));
    

    根据评论更新 .

    您还应该考虑将Job更新为依赖于与实现的 RequestService 相关的 IRequested 抽象,如果确实如此 .

相关问题