在我的项目中,我遇到了后台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'已注册。
我做错了什么?
答案 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
抽象。