Dependency injection with Autofac, MVC5 and OWIN not working
我很难将Autofac与MVC5和Owin集成在一起。看来MVC正在跳过AutofacMvc集成,并且仍在使用System.Web.Mvc.DefaultControllerFactory实例化控制器,从而抛出
1 | No parameterless constructor defined for this object |
有一篇很棒的文章
Alex Meyer-Gleaves致力于为Autofac中的MVC 5集成设置Owin支持。我已经遵循了这一要求,并下载了软件包,但是仍然无法正常工作。这是我的Startup.cs的样子:
1 2 3 4 5 6 7 8 | 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); } |
我已经检查了我的服务是否已注册,如果我从构造函数中删除服务参数,则会成功调用我的路由。还有什么我可能会想念的?可能存在问题的任何提示将不胜感激。
显然,问题出在我忘记将控制器注册到Autofac的事实。添加此行解决了问题:
1 | builder.RegisterControllers(Assembly.GetExecutingAssembly()); |