Hangfire 依赖注入

Hangfire Dependency Injection

在我的项目中,后台作业有问题。我正在使用 Hangfire 和默认的 .Net Core 依赖注入。

Startup.cs

配置服务:

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

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

System.InvalidOperationException: No service for type 'Mapper.Services.RequestService' has been registered.

我做错了什么?

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

根据评论更新。

如果确实如此,您还应该考虑将作业更新为依赖于 IRequested 抽象而不是已实现的 RequestService