2

我正在尝试在我的项目中实施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 之间粘贴所有容器构建器数据,但没有结果。我的 Autofac 配置位于从 Global.asax 调用的名为“Bootstrapper.cs”的文件中。我该如何解决这个问题?谢谢

4

1 回答 1

2
var builder = new ContainerBuilder();

您有两个单独的 autofac 容器。您需要注册您希望您的工作可以访问的组件。另请注意,如果您使用任何数据库连接,您将不再处于 Web 模式,并且将无法访问 Web 请求。

builder.RegisterModule<ServicesModule>(); 

或者

builder.RegisterType<XXXX.Services.ScheduleTasks.RepairNotificationSevice>().PropertiesAutowired().
于 2015-02-02T16:02:14.913 回答