Online about Webapi Ioc stuff a lot like Http://efmvc.codeplex.com/SourceControl/latest#MyFinance.Web/Global.asax.cs This is with Microsoft Iunitycontainer. And also:
ASP. NET Web API and Dependency Injection
But the online about Autofac is really very few, my first contact is also unit test time ASP. NET WEB API Unit Testing
Here's a simple code:
Public classStartup { Public voidConfiguration (Owin.iappbuilder appBuilder) {varConfig =Newhttpconfiguration (); Config. Messagehandlers.add (NewHeaderappenderhandler ()); Config. Messagehandlers.add (NewEndrequesthandler ()); Config. Filters.add (NewArticlesreversedfilter ()); Config. Services.replace (typeof(Iassembliesresolver),Newcustomassembliesresolver ()); Config. Routes.maphttproute (Name:"Defaultapi", Routetemplate:"Api/{controller}/{id}", defaults:New{id =routeparameter.optional}); Config. Maphttpattributeroutes (); //AUTOFAC Configuration varBuilder =NewContainerbuilder (); Builder. Registerapicontrollers (typeof(Articlescontroller). Assembly); //Builder. Registerassemblytypes (assembly.getexecutingassembly ())// . Where (t =>!t.isabstract && typeof (Apicontroller). IsAssignableFrom (t)); //Unit of work var_unitofwork =NewMock<iunitofwork>(); Builder. RegisterInstance (_unitofwork.object). as<IUnitOfWork>(); //repositories var_articlesrepository =NewMock<iarticlerepository>(); _articlesrepository.setup (x=X.getall ()). Returns (Bloggerinitializer.getallarticles ()); Builder. RegisterInstance (_articlesrepository.object). as<IArticleRepository>(); var_blogsrepository =NewMock<iblogrepository>(); _blogsrepository.setup (x=X.getall ()). Returns (Bloggerinitializer.getblogs); Builder. RegisterInstance (_blogsrepository.object). as<IBlogRepository>(); //ServicesBuilder. Registerassemblytypes (typeof(Articleservice). Assembly). Where (t= T.name.endswith ("Service")) . Asimplementedinterfaces (). Instanceperrequest (); Builder. RegisterInstance (NewArticleservice (_articlesrepository.object, _unitofwork.object)); Builder. RegisterInstance (NewBlogservice (_blogsrepository.object, _unitofwork.object)); IContainer Container=Builder. Build (); Config. Dependencyresolver=NewAutofacwebapidependencyresolver (container); Appbuilder.usewebapi (config); } }
I am here for unit testing, so the installation package is as follows:
<?xml version="1.0"encoding="Utf-8"? ><packages><package id="EntityFramework"version="6.1.3"targetframework="net45"/> <package id="AUTOFAC"version="3.5.0"targetframework="net45"/> <package id="Autofac.webapi2"version="3.4.0"targetframework="net45"/> <package id="Microsoft.AspNet.WebApi.Client"version="5.2.3"targetframework="net45"/> <package id="Microsoft.AspNet.WebApi.Core"version="5.2.3"targetframework="net45"/> <package id="Microsoft.AspNet.WebApi.Owin"version="5.2.3"targetframework="net45"/> <package id="Microsoft.AspNet.WebApi.SelfHost"version="5.2.3"targetframework="net45"/> <package id="Microsoft.owin"version="3.0.1"targetframework="net45"/> <package id="Microsoft.Owin.Host.HttpListener"version="3.0.1"targetframework="net46"/> <package id="Microsoft.Owin.Hosting"version="3.0.1"targetframework="net46"/> <package id="Owin"version="1.0"targetframework="net45"/> <package id="Moq"version="4.2.1510.2205"targetframework="net45"/> <package id="Newtonsoft.json"version="6.0.4"targetframework="net45"/> <package id="NUnit"version="3.2.0"targetframework="net45"/> <package id="Nunittestadapter"version="2.0.0"targetframework="net45"/> </packages>
It is recommended to use testdriven.net when testing
ASP. WebAPI Ioc