protected virtual void OnInitialization() { applicationDescription = CreateApplicationDescription(); LogManager.Configuration = CreateLoggingConfigurationBuilder().CreateConfiguration(applicationDescription); environmentProvider = CreateEnvironmentProvider(); configurationDataProvider = CreateConfigurationProvider(applicationDescription); log.Info("Starting cli application: {0}",applicationDescription.Name); var assemblies = FilterAssemblies(applicationDescription.Assemblies); log.Info("Building application container"); var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterInstance(environmentProvider).As<IEnvironmentProvider>(); containerBuilder.RegisterInstance(configurationDataProvider).As<IConfigurationDataProvider>(); containerBuilder.RegisterInstance(applicationDescription).As<IApplicationDescription>(); containerBuilder.RegisterSource(new ConfigurationRegistrationSource(configurationDataProvider,environmentProvider.GetEnvironmentSequence())); containerBuilder.RegisterAutofacModules(assemblies); containerBuilder.RegisterDependencyModules(assemblies); applicationLifetimeScope = containerBuilder.Build(); log.Info("Application container built successfully"); // Execute boottasks foreach( var bootTask in applicationLifetimeScope.Resolve<IEnumerable<IBootTask>>().OrderByDependencies()) { log.Info("Executing boottask: {0}",bootTask.GetType().Name.Replace("Boot",string.Empty).Replace("Task",string.Empty)); bootTask.Boot(); } log.Info("Cli application initialization complete"); }
protected virtual IConfigurationDataProvider CreateConfigurationProvider(IApplicationDescription applicationDescription) { return new JsonFileConfigurationDataProvider(new DirectoryInfo(Path.Combine(applicationDescription.RootDirectory.FullName, "Configuration"))); }
private void OneTimeInitialization() { applicationDescription = CreateApplicationDescription(); LogManager.Configuration = CreateLoggingConfigurationBuilder().CreateConfiguration(applicationDescription); environmentProvider = CreateEnvironmentProvider(); configurationDataProvider = CreateConfigurationProvider(applicationDescription); log.Info("Starting web application: {0}",applicationDescription.Name); var assemblies = FilterAssemblies(applicationDescription.Assemblies); log.Info("Building application container"); var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterInstance(environmentProvider).As<IEnvironmentProvider>(); containerBuilder.RegisterInstance(configurationDataProvider).As<IConfigurationDataProvider>(); containerBuilder.RegisterInstance(applicationDescription).As<IApplicationDescription>(); containerBuilder.RegisterInstance(GlobalConfiguration.Configuration).As<HttpConfiguration>(); containerBuilder.RegisterSource(new ConfigurationRegistrationSource(configurationDataProvider,environmentProvider.GetEnvironmentSequence())); containerBuilder.RegisterAutofacModules(assemblies); containerBuilder.RegisterDependencyModules(assemblies); applicationLifetimeScope = containerBuilder.Build(); log.Info("Application container built successfully"); DependencyResolver.SetResolver(new AutofacDependencyResolver(applicationLifetimeScope)); GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(applicationLifetimeScope); // Documentation provider: var documentationFilename = Server.MapPath("~/bin/" + GetType().BaseType.Assembly.GetName().Name + ".xml"); if (File.Exists(documentationFilename)) { GlobalConfiguration.Configuration.SetDocumentationProvider( new XmlDocumentationProvider(documentationFilename)); } else { log.Warn("Could not find documentation file: {0}",documentationFilename); } // Register areas foreach( var areaRegistration in applicationLifetimeScope.Resolve<IEnumerable<AreaRegistration>>().OrderByDependencies()) { log.Info("Registering area: {0}",areaRegistration.AreaName); var areaRegistrationContext = new AreaRegistrationContext(areaRegistration.AreaName, RouteTable.Routes); areaRegistration.RegisterArea(areaRegistrationContext); } // Register routes foreach (var routeModule in applicationLifetimeScope.Resolve<IEnumerable<IRouteRegistrar>>().OrderByDependencies()) { log.Info("Registering routes from registrar: {0}", routeModule.GetType().Name.Replace("Route", string.Empty).Replace("Registrar", string.Empty)); routeModule.RegisterRoutes(RouteTable.Routes); } // Execute boottasks foreach( var bootTask in applicationLifetimeScope.Resolve<IEnumerable<IBootTask>>().OrderByDependencies()) { log.Info("Executing boottask: {0}",bootTask.GetType().Name.Replace("Boot",string.Empty).Replace("Task",string.Empty)); bootTask.Boot(); } log.Info("Web application initialization complete"); }