Инъекция зависимостей с не работающими Autofac, MVC5 и OWIN

У меня возникают трудности при интеграции Autofac с MVC5 и Owin. Кажется, что MVC пропускает интеграцию AutofacMvc и все еще использует System.Web.Mvc.DefaultControllerFactory для создания экземпляра контроллера, таким образом, выбрасывая

No parameterless constructor defined for this object

Есть отличная статья Алекса Мейера- Гливса о настройке поддержки Owin для интеграции MVC 5 в Autofac. Я следил за этим и загружал пакеты, но все еще не работал. Вот как выглядит мой Startup.cs:

public void Configuration(IAppBuilder app)
{ 
    var container = AutofacConfig.Register();
    app.UseAutofacMiddleware(container);  // 1 - setting up autofac middleware (Autofac.Integration.Owin.dll)
    app.UseAutofacMvc(); // 2 - passing on life time scope created in Owin onto MVC request (Autofac.Integration.Mvc.Owin)
    DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); // 3 - setting dependency resolver for MVC (Autofac.Integration.Mvc)
    RouteConfig.RegisterRoutes(RouteTable.Routes);
}

Я проверил, что моя служба была зарегистрирована, мой маршрут успешно вызывается, если я удаляю параметр службы из конструктора. Что еще мне может не хватать? Будем благодарны за любые подсказки, где может быть проблема.

1 ответ

Судя по всему, проблема заключалась в том, что я забыл зарегистрировать контроллеры в Autofac. добавление этой строки решило проблему:

builder.RegisterControllers(Assembly.GetExecutingAssembly());
Другие вопросы по тегам