示例#1
0
        public void Configuration(IAppBuilder app)
        {
            var builder = new ContainerBuilder();

            builder.RegisterType <CustomErrorFilterAttribute>().AsWebApiExceptionFilterFor <ApiController>();
            builder.RegisterType <AuthorizeFilterAttribute>().AsWebApiActionFilterFor <UsersController>().InstancePerRequest();
            builder.RegisterType <AuthorizeFilterAttribute>().AsWebApiActionFilterFor <GroupsController>().InstancePerRequest();
            builder.RegisterType <AuthorizeFilterAttribute>()
            .AsWebApiActionFilterFor <AccountController>(controller => controller.LogoutUser())
            .InstancePerRequest();

            // Register your Web API controllers.
            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            AutofacTypedFactoryExtensions.RegisterTypedFactory <IGroupFactory>(builder).ReturningConcreteType();
            AutofacTypedFactoryExtensions.RegisterTypedFactory <IUserFactory>(builder).ReturningConcreteType();
            AutofacTypedFactoryExtensions.RegisterTypedFactory <ILinkFactory>(builder).ReturningConcreteType();
            AutofacTypedFactoryExtensions.RegisterTypedFactory <IInvitationFactory>(builder).ReturningConcreteType();
            AutofacTypedFactoryExtensions.RegisterTypedFactory <IUserSessionFactory>(builder).ReturningConcreteType();

            builder.RegisterType <UserService>().As <IUserService>().InstancePerRequest();
            builder.RegisterType <GroupService>().As <IGroupService>().InstancePerRequest();
            builder.RegisterType <SessionService>().As <ISessionService>().InstancePerRequest();
            builder.RegisterType <InvitationService>().As <IInvitationService>().InstancePerRequest();
            builder.RegisterType <LinkService>().As <ILinkService>().InstancePerRequest();

            builder.RegisterType <UnitOfWork>().As <IUnitOfWork>().InstancePerRequest();
            builder.RegisterType <SecretSantaDbContext>().As <ISecretSantaDbContext>().InstancePerRequest();
            builder.RegisterGeneric(typeof(EfRepository <>)).As(typeof(IEfRepository <>)).InstancePerRequest();

            // Get your HttpConfiguration.
            var config = GlobalConfiguration.Configuration;

            builder.RegisterWebApiFilterProvider(config);

            // Set the dependency resolver to be Autofac.
            var container = builder.Build();

            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);

            ConfigureAuth(app);
        }
示例#2
0
        protected void Application_Start()
        {
            var builder = new ContainerBuilder();

            // Data Layer Bindings
            builder.RegisterType <DbContext>()
            .As <IDbContext>()
            .InstancePerRequest();
            builder.RegisterGeneric(typeof(Repository <>))
            .As(typeof(IRepository <>))
            .InstancePerRequest();
            builder.RegisterType <UnitOfWork>()
            .As <IUnitOfWork>()
            .InstancePerRequest();

            // Factories
            AutofacTypedFactoryExtensions.RegisterTypedFactory <IUsersFactory>(builder).ReturningConcreteType();
            AutofacTypedFactoryExtensions.RegisterTypedFactory <IManagersFactory>(builder).ReturningConcreteType();
            AutofacTypedFactoryExtensions.RegisterTypedFactory <IBookingsFactory>(builder).ReturningConcreteType();
            AutofacTypedFactoryExtensions.RegisterTypedFactory <IRestaurantsFactory>(builder).ReturningConcreteType();

            // Service layer Bindings
            builder.RegisterType <RestaurantsService>()
            .As <IRestaurantsService>()
            .InstancePerRequest();
            builder.RegisterType <UsersService>()
            .As <IUsersService>()
            .InstancePerRequest();
            builder.RegisterType <BookingsService>()
            .As <IBookingsService>()
            .InstancePerRequest();

            builder.RegisterType <JwtSecurityTokenHandler>()
            .AsSelf()
            .InstancePerRequest();
            builder.RegisterType <HttpContextProvider>()
            .As <IHttpContextProvider>()
            .InstancePerRequest();
            builder.RegisterType <DateTimeProvider>()
            .As <IDateTimeProvider>()
            .InstancePerRequest();
            builder.RegisterType <AuthenticationProvider>()
            .As <IAuthenticationProvider>()
            .InstancePerRequest();
            builder.RegisterType <ModelsMapper>()
            .As <IModelsMapper>()
            .SingleInstance();

            builder.RegisterType <TokenValidationHandler>()
            .AsWebApiActionFilterFor <UsersController>()
            .InstancePerRequest();
            builder.RegisterType <TokenValidationHandler>()
            .AsWebApiActionFilterFor <RestaurantsController>()
            .InstancePerRequest();
            builder.RegisterType <TokenValidationHandler>()
            .AsWebApiActionFilterFor <BookingsController>()
            .InstancePerRequest();

            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            var config = GlobalConfiguration.Configuration;

            builder.RegisterWebApiFilterProvider(config);

            // Set the dependency resolver to be Autofac.
            var container = builder.Build();

            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);

            GlobalConfiguration.Configure(WebApiConfig.Register);
            GlobalConfiguration.Configuration.Filters.Add(new GlobalExceptionFilter());
        }