2015-10-08 121 views
2

我MVC控制器(在控制器文件夾),在同一個項目網頁API控制器(以API文件夾):這裏是文件夾結構:Autofac - 依賴注入的MVC控制器和網絡API控制器

  • 控制器
    • ProductController的
  • 阿比
    • ProductCo ntroller

這裏是我的引導程序方法:

 private static void SetAutofacContainer() 
     { 
      var builder = new ContainerBuilder(); 
      builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); 
      builder.RegisterControllers(Assembly.GetExecutingAssembly()); 
      //builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerRequest(); 
      builder.RegisterType<DbFactory>().As<IDbFactory>().InstancePerRequest(); 

      // Repositories 
      builder.RegisterAssemblyTypes(typeof(ProductRepository).Assembly) 
       .Where(t => t.Name.EndsWith("Repository")) 
       .AsImplementedInterfaces().InstancePerRequest(); 

      IContainer container = builder.Build(); 
      DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 
     } 

我不能注入資源庫到我的網絡API控制器。這是我得到的例外:

嘗試創建類型爲 'ProductController'的控制器時發生錯誤。確保控制器具有無參數 公共構造函數。

我在做什麼錯?

+2

當一切都失敗了,閱讀文檔:http://docs.autofac.org/en/stable/integration/webapi.html#set-the-dependency-分解器 – NightOwl888

回答

8

您還沒有設置Web API的GlobalConfiguration.Configuration.DependencyResolver;你只能設置MVC的DependencyResolver

添加以下行:

GlobalConfiguration.Configuration.DependencyResolver = 
    new AutofacWebApiDependencyResolver(container);