public static void Configure()
        {
            // http://code.google.com/p/autofac/wiki/MvcIntegration
            var builder = new ContainerBuilder();

            builder.RegisterControllers(Assembly.GetExecutingAssembly());

            builder.Register(c => new DefaultConfigurationService()).As <IConfigurationService>().InstancePerDependency();
            builder.Register(c => new DefaultDataService()).As <IDataService>().InstancePerDependency();
            builder.Register(c => new DefaultCacheService()).As <ICacheService>().InstancePerDependency();

            // Enable the desired mail service (not by type name but by friendly name)
            string selectedMailService = new DefaultConfigurationService().MailService;

            if ("sendgrid" == selectedMailService)
            {
                builder.Register(c => new SendGridMailService(c.Resolve <IConfigurationService>()))
                .As <IMailService>().InstancePerDependency();
            }
            else if ("smtp" == selectedMailService)
            {
                builder.Register(c => new SmtpMailService(c.Resolve <IConfigurationService>()))
                .As <IMailService>().InstancePerDependency();
            }
            else
            {
                builder.Register(c => new DevStubMailService()).As <IMailService>().InstancePerDependency();
            }


            builder.Register(c => new DefaultTranslationService(c.Resolve <IDataService>(),
                                                                c.Resolve <ICacheService>(),
                                                                c.Resolve <IMailService>(),
                                                                c.Resolve <IConfigurationService>()))
            .As <ITranslationService>().InstancePerDependency();

            // MVC
            IContainer container = builder.Build();

            System.Web.Mvc.DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            // Web API
            var resolver = new Autofac.Integration.WebApi.AutofacWebApiDependencyResolver(container);

            System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver = resolver;
        }
        public static void Configure()
        {
            // http://code.google.com/p/autofac/wiki/MvcIntegration
            var builder = new ContainerBuilder();
            builder.RegisterControllers(Assembly.GetExecutingAssembly());

            builder.Register(c => new DefaultConfigurationService()).As<IConfigurationService>().InstancePerDependency();
            builder.Register(c => new DefaultDataService()).As<IDataService>().InstancePerDependency();
            builder.Register(c => new DefaultCacheService()).As<ICacheService>().InstancePerDependency();

            // Enable the desired mail service (not by type name but by friendly name)
            string selectedMailService = new DefaultConfigurationService().MailService;
            if ("sendgrid" == selectedMailService)
            {
                builder.Register(c => new SendGridMailService(c.Resolve<IConfigurationService>()))
                    .As<IMailService>().InstancePerDependency();
            }
            else if ("smtp" == selectedMailService)
            {
                builder.Register(c => new SmtpMailService(c.Resolve<IConfigurationService>()))
                    .As<IMailService>().InstancePerDependency();
            }
            else
            {
                builder.Register(c => new DevStubMailService()).As<IMailService>().InstancePerDependency();
            }

            builder.Register(c => new DefaultTranslationService(c.Resolve<IDataService>(),
                    c.Resolve<ICacheService>(),
                    c.Resolve<IMailService>(),
                    c.Resolve<IConfigurationService>()))
                .As<ITranslationService>().InstancePerDependency();

            // MVC
            IContainer container = builder.Build();
            System.Web.Mvc.DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            // Web API
            var resolver = new Autofac.Integration.WebApi.AutofacWebApiDependencyResolver(container);
            System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver = resolver;
        }
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //初始化容器,并返回适用于WebApi的AutoFac解析器
            RayContainer.Init(builder =>
            {
                new Startup().ConfigureServices(builder);
                return(builder);
            });
            System.Web.Http.Dependencies.IDependencyResolver autoFacResolver = new Autofac.Integration.WebApi.AutofacWebApiDependencyResolver(RayContainer.AutofacRootScope);
            //获取HttpConfiguration
            HttpConfiguration config = GlobalConfiguration.Configuration;

            //将AutoFac解析器设置为系统DI解析器
            config.DependencyResolver = autoFacResolver;
        }
        public void Automate()
        {
            //arrange
            //Todo: Use Autofacs config for this initialization
            AutofacConfig.Register();
            AutoMapperConfig.RegisterMappings();
            //var db = new EntityMapperDbContext();
            //var authAdapter = new IdentityAuthAdapter();
            //var repo = new EfRepository<EntityMapping>(db, authAdapter);
            //var _logger = new InMemoryLogger();
            //EfRepository<MappingOrigin> originRepo = new EfRepository<MappingOrigin>(db, authAdapter);
            //EfRepository<Entity> entityRepo = new EfRepository<Entity>(db, authAdapter);
            //IMappingRepository mappingRepository = new EntityMappingRepository(db, repo, _logger);
            //var sut = new EntityMappingsController(repo, originRepo, entityRepo, mappingRepository);

            var DependencyResolver = new Autofac.Integration.WebApi.AutofacWebApiDependencyResolver(AutofacConfig.Container);

            using (var scope = AutofacConfig.Container.BeginLifetimeScope("'AutofacWebRequest"))
            //using (var scope = DependencyResolver.BeginScope())
            {
                var db            = scope.Resolve <EntityMapperDbContext>();
                var sut           = scope.Resolve <AutomationController>();
                var dbRecordCount = db.EntityMappings.Count();

                //act
                var actionResult = sut.Automate(new AutomatedEntityMappingViewModel
                {
                    DestinationSystemId = 177,
                    SourceSystemId      = 176,
                    DomainId            = 98
                });
                var result = actionResult as OkNegotiatedContentResult <List <EntityMappingViewModel> >;
                //assert
                Assert.NotNull(result);
                var content = result.Content;

                Assert.AreEqual(dbRecordCount, content.Count);
            }
        }