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); }
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()); }