2015-01-30 1 views
2

Я собираюсь реализовать hangfire в своих проектах. У меня есть вопрос, когда я добавить RecurringJob к замедленному воспламенению, когда он выстрелил я получаю эту ошибку:Проблемы с активацией работы с огнем и Autofac

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.autofac. Я добавил конфигурацию hangfire в моем Startup.cs, но мои данные ContainerBuilder находятся в другом файле. Мой файл startup.cs выглядит так:

app.UseHangfire(config => 
     { 
      config.UseSqlServerStorage("EmacIntranetEntities"); 
      config.UseServer(); 
      var builder = new ContainerBuilder(); 
      config.UseAutofacActivator(builder.Build()); 
     }); 

Не работает. У меня есть проверка, чтобы вставить все данные компоновщика контейнера между var builder и config.UseAutofacActivator без результата. Моя конфигурация Autofac находится в файле с именем «Bootstrapper.cs», который вызывается из Global.asax. Как я могу решить эту проблему? Thanks

ответ

2
var builder = new ContainerBuilder(); 

У вас есть два отдельных автофургона. Вам необходимо зарегистрировать компоненты, к которым вы хотите, чтобы ваши задания имели доступ. Также обратите внимание, если вы используете какие-либо подключения к базе данных, вы больше не находитесь в веб-режиме и не имеете доступа к веб-запросу.

builder.RegisterModule<ServicesModule>(); 

или

builder.RegisterType<XXXX.Services.ScheduleTasks.RepairNotificationSevice>().PropertiesAutowired(). 
+0

Спасибо за совет. Я не нашел способа поделиться контейнером с autofac, поэтому я изменил autofac в пользу простого инжектора и изменил инициализацию контейнера в startup.cs. Теперь все в порядке. Благодаря! – Daniel

+0

Не работает: (... получить сообщение об ошибке «Область действия запроса не может быть создана, потому что HttpContext недоступен» – Jinesh

Смежные вопросы