public static void AutofacMvcRegister() { ContainerBuilder builder = new ContainerBuilder(); builder.RegisterGeneric(typeof(Repository <,>)).As(typeof(IRepository <,>)); Type baseType = typeof(IDependency); Assembly[] assemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies() .Select(Assembly.Load).ToArray(); assemblies = assemblies.Union(new[] { Assembly.GetExecutingAssembly() }).ToArray(); builder.RegisterAssemblyTypes(assemblies) .Where(type => baseType.IsAssignableFrom(type) && !type.IsAbstract) .AsImplementedInterfaces().InstancePerLifetimeScope(); //InstancePerLifetimeScope 保证生命周期基于请求 builder.RegisterControllers(Assembly.GetExecutingAssembly()); builder.RegisterFilterProvider(); IContainer container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); ContractHelper.SetContainer(container); }