Web api2使用Autofac

摘要:Web api2使用Autofac

有點久沒寫文章了,其實使用ONENOTE之後,有些筆記或備忘,或備用範例就記錄在自己筆記本了,不過因為這方面的問題,我想可能對有些人有幫助,所以我就提供出我的做法。

因為我之前是用unity的版本,不過看了bruce大大的文章,發覺autofac好像更新支援上比較快,所以就花了一點時間改寫成autofac的。

首先先把web api全部更新到最新版,然後mvc也順便更新了,然後安裝Autofac ASP.NET Web API 2.1 Integraion,如果要更新Json.net的話請注意,請先參考bruce的文章,更新到最新版,不然會出錯。

我參考mrkt大大和burce大大的文章之後,整理了一下所以就寫成這樣子,先在App_Star加入AutofacConfig.cs,再加入下面的程式碼

 

public static void Bootstrapper()
       {
           // 容器建立者
           var builder = new ContainerBuilder();
           // 註冊Web API Controllers
           builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
           // 註冊相依關係           
           builder.Register(c => new TaiwanAreaService()).As<itaiwanareaservice>(ITaiwanAreaService).InstancePerApiRequest();
           // 建立容器
           var container = builder.Build();
           // 建立相依解析器
           var resolver = new AutofacWebApiDependencyResolver(container);
           // 組態Web API相依解析器
           GlobalConfiguration.Configuration.DependencyResolver = resolver;
       }

 


註冊相依關係的這行最重要,也就是您要注入的介面和類別的對應

然後再去Global.asax的protected void Application_Start()裡面加入這行

 AutofacConfig.Bootstrapper();

我測試這樣就可以了..........希望對有需要的人會有幫助。