/// <summary> /// Initialize can configure main container types. /// </summary> private void ConfigureContainerAndRegisterTypes(WebUIConfigs uiConfigs, IAppBuilder appBuilder, Container container, IEnumerable <Assembly> assemblies) { container.Options.DefaultLifestyle = new WebRequestLifestyle(); container.Options.DefaultScopedLifestyle = new WebRequestLifestyle(); container.Options.PropertySelectionBehavior = new ImportPropertySelectionBehavior(); // Register all web platform commont types DependencyInjectionInitializer.RegisterWebPlatformCommonTypes(uiConfigs, appBuilder, container, assemblies); // Register all optimization bundles container.RegisterCollection <Bundle>(assemblies); // MVC IFilterProvider attributes container.RegisterMvcIntegratedFilterProvider(); // MVC controllers container.RegisterMvcControllers(); // OAuth user sign in manager container.Register <DotUserSignInManager>(); // IAuthenticationManager container.Register(() => { // If testing (container.Verify()) or no context available, return a dummy instance if (AdvancedExtensions.IsVerifying(container) || HttpContext.Current == null) { return(new OwinContext().Authentication); } // Otherwise return current authentication manager instance return(HttpContext.Current.GetOwinContext().Authentication); }); // IWebContext container.Register <IWebContext>(() => { // If testing (container.Verify()) or no context available, return a dummy instance if (AdvancedExtensions.IsVerifying(container) || HttpContext.Current == null) { return(new WebUIContext()); } // Otherwise return current user web context. return(new WebUIContext(new CorePrincipal(HttpContext.Current.User))); }); }
private static async Task <Container> GetContainerAsync() { if (_container != null) { return(_container); } using (await AsyncLock.LockAsync()) { var container = DependencyInjectionInitializer.Initialize(); var startupTasks = container.GetAllInstances <IRunAtStartup>(); foreach (var task in startupTasks) { await task.RunAsync(); } _container = container; } return(_container); }