2014-01-12 6 views
4

Я только что обновил все мои пакеты Autofac до получения поддержки веб-api 2. В моем контроллере api я создал конструктор с запросом экземпляра класса уровня сервиса, это идентично как я использую autofac со всеми моими контроллерами mvc, и он отлично работает.Проблемы с интеграцией AutoFac Web Api 2

В моей конфигурации ioc, которая выполняется при запуске приложения, я зарегистрировал веб-контроллер api.

builder.RegisterType<UsersApiController>().InstancePerApiRequest(); 

Я также попытался

builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); 

Но autofac не работает с моим контроллером апи, конструктор, который запрашивает класс обслуживания, который будет введен не даже получить казнены. Я также получаю сообщение об ошибке, если я не включаю конструктор меньше по умолчанию в контроллер api.

Есть ли известная проблема с web api 2 и auto fac или я что-то упускаю?

+2

ли вы установили 'GlobalConfiguration.Configuration.DependencyResolver'? – nemesv

+0

вот так? DependencyResolver.SetResolver (новый AutofacDependencyResolver (контейнер)); – JBeckton

+0

Мои контроллеры mvc работают, как ожидалось, с DI, задаваясь вопросом, почему контроллеры API не являются. – JBeckton

ответ

-1

Этот блог работает для меня

http://danielhindrikes.se/cloud/azure/azure-mobile-services-and-autofac/

Так что мой код выглядит это

public static void Register(){ 

      ConfigOptions options = new ConfigOptions(); 

      //Prepare Dependency Injection Container 
      var configBuilder = new ConfigBuilder(options, DependencyInjectionConfig); 


      // Use this class to set WebAPI configuration options 
      HttpConfiguration config = ServiceConfig.Initialize(configBuilder); 
} 

private static void DependencyInjectionConfig(ContainerBuilder containerBuilder) 
{ 
      containerBuilder.Register(component => new EFProductRepository()).As<IProductRepository>().SingleInstance(); 
      containerBuilder.RegisterType<ProductsManager>().As<IProductsManager>(); 
}