2014-10-10 133 views
0

我很难整合Autofac与MVC5和Owin。看来,MVC是跳过AutofacMvc集成和仍然使用System.Web.Mvc.DefaultControllerFactory实例化一个控制器,从而引发依赖注入与Autofac,MVC5和OWIN不起作用

No parameterless constructor defined for this object 

有来自 亚历克斯·迈尔Gleaves上setting up Owin support for MVC 5 integrations in 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); 
} 

我已经检查了我的服务被注册,我的路线被调用成功,如果我从构造函数中删除服务参数。我还可能错过什么?值得欣慰的是,任何提示可能存在问题。

回答

4

显然,问题出在我忘了将控制器注册到Autofac中的事实。加入这条线解决了这个问题:

builder.RegisterControllers(Assembly.GetExecutingAssembly());