Hangfire依赖注入

时间:2017-01-12 12:57:19

标签: c# dependency-injection asp.net-core hangfire

在我的项目中,我遇到了后台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 :(得分:0)

DI知道如何通过提供IRequested来处理RequestService。但这是针对要求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更新为依赖于与实现的IRequested相关的RequestService抽象。