2014-10-10 60 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());