public static void SetWebApiDependenciesAndOWIN(System.Reflection.Assembly webApiAssembly, HttpConfiguration httpConfiguration, IAppBuilder appBuilder, Module webApiModule)
        {
            // Register components
            ContainerBuilder containerBuilder = new ContainerBuilder();

            // Register dependencies in controllers
            containerBuilder.RegisterApiControllers(webApiAssembly);

            // Register database entities context
            containerBuilder.Register(dbContext => new Emos1Context()).As <IContextEmos1>().InstancePerLifetimeScope();
            containerBuilder.Register(dbContext => new ESRContext()).As <IContextESR>().InstancePerDependency();

            // Register security implementations
            // Users
            ////containerBuilder.RegisterType<ApplicationUserStore>().As<IUserStore<ApplicationUser>>().InstancePerLifetimeScope();
            ////containerBuilder.RegisterType<ApplicationUserManager>().AsSelf();
            ////containerBuilder.RegisterType<ApplicationSignInManager>().AsSelf();
            ////// Roles
            ////containerBuilder.RegisterType<ApplicationRoleStore>().As<IRoleStore<ApplicationRole, string>>();
            ////containerBuilder.RegisterType<ApplicationRoleManager>().AsSelf();


            // Register repositories ESR
            containerBuilder.RegisterType <ESRRepository <CEMUser> >().As <IRepositoryESR <CEMUser> >();
            containerBuilder.RegisterType <ESRRepository <UserSystemAction> >().As <IRepositoryESR <UserSystemAction> >();
            containerBuilder.RegisterType <ESRRepository <Event> >().As <IRepositoryESR <Event> >();

            // Register repositories EMOS1
            containerBuilder.RegisterType <Emos1Repository <Client> >().As <IRepositoryEmos1 <Client> >().InstancePerLifetimeScope();


            // Register ESR services
            containerBuilder.RegisterType <LoginService>().As <ILoginService>().InstancePerLifetimeScope();
            containerBuilder.RegisterType <UserService>().As <IUserService>().InstancePerLifetimeScope();
            containerBuilder.RegisterType <UserPermissionService>().As <IUserPermissionService>().InstancePerLifetimeScope();
            containerBuilder.RegisterType <EventService>().As <IEventService>().InstancePerLifetimeScope();

            // Register EMOS1 services
            containerBuilder.RegisterType <ClientService>().As <IClientService>().InstancePerLifetimeScope();

            // Register WebApiModule
            containerBuilder.RegisterModule(webApiModule);

            // Register OWIN functionalities
            containerBuilder.Register <IAuthenticationManager>(c => HttpContext.Current.GetOwinContext().Authentication);

            // Setting DependencyResolver
            container = containerBuilder.Build();
            AutofacWebApiDependencyResolver dependencyResolver = new AutofacWebApiDependencyResolver(container);

            httpConfiguration.DependencyResolver = dependencyResolver;

            // Create Per OWIN Context
            //appBuilder.CreatePerOwinContext<IdentityDbContext<ApplicationUser>>(Emos2EntitiesContext.Create);

            // Setting OWIN WebAPIconfigurations, token generation
            appBuilder.UseOAuthAuthorizationServer(AuthenticationConfig.GetTokenAuthenticationOptions(container));
            appBuilder.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());

            // Registering Owin with Dependecy Injection framework
            appBuilder.UseAutofacMiddleware(container);
            appBuilder.UseAutofacWebApi(httpConfiguration);

            // Enabling OWIN CORS
            appBuilder.UseCors(CorsOptions.AllowAll);

            // Configures Web API to run on top of OWIN
            appBuilder.UseWebApi(httpConfiguration);
        }