Инъекция зависимостей с не работающими 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());