我正在试图在我的项目中实施hangfire。我将一个RecurringJob添加到hangfire时出现问题,当它被解雇时我收到此错误:
Autofac.Core.Registration.ComponentNotRegisteredException
请求的服务 ' XXXX.Services.ScheduleTasks.RepairNotificationSevice'一直没有 注册。要避免此异常,请将组件注册到 提供服务,检查服务注册使用 IsRegistered(),或使用ResolveOptional()方法来解析 可选的依赖。
我安装了hangfire和hangfire.autofac。我在我的Startup.cs中添加了hangfire配置,但我的ContainerBuilder数据在另一个文件中。我的startup.cs文件看起来像:
app.UseHangfire(config =>
{
config.UseSqlServerStorage("EmacIntranetEntities");
config.UseServer();
var builder = new ContainerBuilder();
config.UseAutofacActivator(builder.Build());
});
不行。我检查了在var builder和config.UseAutofacActivator之间粘贴所有Container构建器数据而没有结果。我的Autofac配置位于名为" Bootstrapper.cs"的文件中。从Global.asax调用。我该如何解决这个问题? 感谢
答案 0 :(得分:2)
var builder = new ContainerBuilder();
您有两个单独的autofac容器。您需要注册您希望作业可以访问的组件。另请注意,如果您使用任何数据库连接,则不再处于Web模式,也无法访问Web请求。
builder.RegisterModule<ServicesModule>();
或
builder.RegisterType<XXXX.Services.ScheduleTasks.RepairNotificationSevice>().PropertiesAutowired().