hangfire 作业激活和 Autofac 的问题
Issues with hangfire job activation and Autofac
我正在尝试在我的项目中实施 hangfire。我在将 RecurringJob 添加到 hangfire 时遇到问题,当它被解雇时我收到此错误:
Autofac.Core.Registration.ComponentNotRegisteredException
The requested service
'XXXX.Services.ScheduleTasks.RepairNotificationSevice' has not been
registered. To avoid this exception, either register a component to
provide the service, check for service registration using
IsRegistered(), or use the ResolveOptional() method to resolve an
optional dependency.
我已经安装了 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 builder 数据但没有结果。我的 Autofac 配置位于从 Global.asax 调用的名为 "Bootstrapper.cs" 的文件中。我该如何解决这个问题?
谢谢
var builder = new ContainerBuilder();
您有两个单独的 autofac 容器。您需要注册您希望作业可以访问的组件。另请注意,如果您使用任何数据库连接,您将不再处于 Web 模式,并且将无法访问 Web 请求。
builder.RegisterModule<ServicesModule>();
或
builder.RegisterType<XXXX.Services.ScheduleTasks.RepairNotificationSevice>().PropertiesAutowired().
我正在尝试在我的项目中实施 hangfire。我在将 RecurringJob 添加到 hangfire 时遇到问题,当它被解雇时我收到此错误:
Autofac.Core.Registration.ComponentNotRegisteredException
The requested service 'XXXX.Services.ScheduleTasks.RepairNotificationSevice' has not been registered. To avoid this exception, either register a component to provide the service, check for service registration using IsRegistered(), or use the ResolveOptional() method to resolve an optional dependency.
我已经安装了 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 builder 数据但没有结果。我的 Autofac 配置位于从 Global.asax 调用的名为 "Bootstrapper.cs" 的文件中。我该如何解决这个问题? 谢谢
var builder = new ContainerBuilder();
您有两个单独的 autofac 容器。您需要注册您希望作业可以访问的组件。另请注意,如果您使用任何数据库连接,您将不再处于 Web 模式,并且将无法访问 Web 请求。
builder.RegisterModule<ServicesModule>();
或
builder.RegisterType<XXXX.Services.ScheduleTasks.RepairNotificationSevice>().PropertiesAutowired().