我以爲我想補充一點幫助那些mvc5和Web API與此掙扎2.
首先添加的NuGet包
- Autofac
- Autofac asp.net的MVC 5一體化
- Autofac asp.net web api 2。X集成
全球加入的Application_Start(或app_start類)添加調用下面類
AutofacConfig.RegisterAutoFac();
現在App_start
using System.Reflection;
using System.Web.Http;
using System.Web.Http.Controllers;
using System.Web.Mvc;
using Autofac;
using Autofac.Integration.Mvc;
using Autofac.Integration.WebApi;
namespace Example1.Web
{
public class AutofacConfig
{
public static IContainer RegisterAutoFac()
{
var builder = new ContainerBuilder();
AddMvcRegistrations(builder);
AddRegisterations(builder);
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
return container;
}
private static void AddMvcRegistrations(ContainerBuilder builder)
{
//mvc
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterAssemblyModules(Assembly.GetExecutingAssembly());
builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
builder.RegisterModelBinderProvider();
//web api
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).PropertiesAutowired();
builder.RegisterModule<AutofacWebTypesModule>();
}
private static void AddRegisterations(ContainerBuilder builder)
{
//builder.RegisterModule(new MyCustomerWebAutoFacModule());
}
}
}
下添加該類從現在開始爲每個新添加到項目中的程序集添加一個新模塊,然後在AddRegisterations函數中註冊該模塊(示例給出)
注意:
我退回了容器,這是沒有必要的。
這將掃描當前程序集的模塊,因此不要在AddRegisterations中添加本地模塊,否則您將註冊一切兩次。
我在這裏有一個最小的實現:http://byterot.blogspot.co.uk/2012/04/aspnet-web-api-series-part-4-dependency.html – Aliostad 2012-07-14 16:49:37