protected void Application_Start() { //string log4netPath = Server.MapPath(string.Format("~/log4net.{0}.config", WebStatus.Version)); //log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(log4netPath)); RouteTable.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = System.Web.Http.RouteParameter.Optional } ); log4net.Config.XmlConfigurator.Configure(); AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); MvcHandler.DisableMvcResponseHeader = true; GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); if (!Section.Get.Common.IsTest) { //new MiscController().Minifier(); } new Install().Start(); }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); RouteConfig.RegisterRoutes(RouteTable.Routes); ConfigureFormatter(GlobalConfiguration.Configuration); ContractMapping.MappingRegistration(); GlobalInitializer.Initialize(); _backgroundJobServer = new BackgroundJobServer( new BackgroundJobServerOptions() { Queues = new string[] { "default", "checker" }, ServerName = Environment.MachineName }); }
public void Configuration(IAppBuilder app, string virtualRoot, string routPrefix) { VirtualRoot = virtualRoot; _assembliesPath = HostingEnvironment.MapPath(VirtualRoot + "/App_Data/Modules"); var platformPath = HostingEnvironment.MapPath(VirtualRoot).EnsureEndSeparator(); var modulesVirtualPath = VirtualRoot + "/Modules"; var modulesPhysicalPath = HostingEnvironment.MapPath(modulesVirtualPath).EnsureEndSeparator(); AppDomain.CurrentDomain.AssemblyResolve += CurrentDomainOnAssemblyResolve; //Modules initialization var bootstrapper = new VirtoCommercePlatformWebBootstrapper(modulesVirtualPath, modulesPhysicalPath, _assembliesPath, platformPath); bootstrapper.Run(); var container = bootstrapper.Container; container.RegisterInstance(app); var moduleInitializerOptions = (ModuleInitializerOptions)container.Resolve <IModuleInitializerOptions>(); moduleInitializerOptions.VirtualRoot = virtualRoot; moduleInitializerOptions.RoutePrefix = routPrefix; //Initialize Platform dependencies const string connectionStringName = "VirtoCommerce"; var hangfireOptions = new HangfireOptions { StartServer = ConfigurationManager.AppSettings.GetValue("VirtoCommerce:Jobs.Enabled", true), JobStorageType = ConfigurationManager.AppSettings.GetValue("VirtoCommerce:Jobs.StorageType", "Memory"), DatabaseConnectionStringName = connectionStringName, }; var hangfireLauncher = new HangfireLauncher(hangfireOptions); InitializePlatform(app, container, connectionStringName, hangfireLauncher); var moduleManager = container.Resolve <IModuleManager>(); var moduleCatalog = container.Resolve <IModuleCatalog>(); var applicationBase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase.EnsureEndSeparator(); // Register URL rewriter for platform scripts var scriptsPhysicalPath = HostingEnvironment.MapPath(VirtualRoot + "/Scripts").EnsureEndSeparator(); var scriptsRelativePath = MakeRelativePath(applicationBase, scriptsPhysicalPath); var platformUrlRewriterOptions = new UrlRewriterOptions(); platformUrlRewriterOptions.Items.Add(PathString.FromUriComponent("/$(Platform)/Scripts"), ""); app.Use <UrlRewriterOwinMiddleware>(platformUrlRewriterOptions); app.UseStaticFiles(new StaticFileOptions { FileSystem = new Microsoft.Owin.FileSystems.PhysicalFileSystem(scriptsRelativePath) }); // Register URL rewriter before modules initialization if (Directory.Exists(modulesPhysicalPath)) { var modulesRelativePath = MakeRelativePath(applicationBase, modulesPhysicalPath); var urlRewriterOptions = new UrlRewriterOptions(); foreach (var module in moduleCatalog.Modules.OfType <ManifestModuleInfo>()) { var urlRewriteKey = string.Format(CultureInfo.InvariantCulture, "/Modules/$({0})", module.ModuleName); var urlRewriteValue = MakeRelativePath(modulesPhysicalPath, module.FullPhysicalPath); urlRewriterOptions.Items.Add(PathString.FromUriComponent(urlRewriteKey), "/" + urlRewriteValue); moduleInitializerOptions.ModuleDirectories.Add(module.ModuleName, module.FullPhysicalPath); } app.Use <UrlRewriterOwinMiddleware>(urlRewriterOptions); app.UseStaticFiles(new StaticFileOptions { FileSystem = new Microsoft.Owin.FileSystems.PhysicalFileSystem(modulesRelativePath) }); } // Ensure all modules are loaded foreach (var module in moduleCatalog.Modules.Where(x => x.State == ModuleState.NotStarted)) { moduleManager.LoadModule(module.ModuleName); } // Post-initialize // Platform MVC configuration if (IsApplication) { AreaRegistration.RegisterAllAreas(); } GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); AuthConfig.RegisterAuth(); // Security OWIN configuration var authenticationOptions = new Core.Security.AuthenticationOptions { CookiesEnabled = ConfigurationManager.AppSettings.GetValue("VirtoCommerce:Authentication:Cookies.Enabled", true), CookiesValidateInterval = ConfigurationManager.AppSettings.GetValue("VirtoCommerce:Authentication:Cookies.ValidateInterval", TimeSpan.FromDays(1)), BearerTokensEnabled = ConfigurationManager.AppSettings.GetValue("VirtoCommerce:Authentication:BearerTokens.Enabled", true), BearerTokensExpireTimeSpan = ConfigurationManager.AppSettings.GetValue("VirtoCommerce:Authentication:BearerTokens.AccessTokenExpireTimeSpan", TimeSpan.FromHours(1)), HmacEnabled = ConfigurationManager.AppSettings.GetValue("VirtoCommerce:Authentication:Hmac.Enabled", true), HmacSignatureValidityPeriod = ConfigurationManager.AppSettings.GetValue("VirtoCommerce:Authentication:Hmac.SignatureValidityPeriod", TimeSpan.FromMinutes(20)), ApiKeysEnabled = ConfigurationManager.AppSettings.GetValue("VirtoCommerce:Authentication:ApiKeys.Enabled", true), ApiKeysHttpHeaderName = ConfigurationManager.AppSettings.GetValue("VirtoCommerce:Authentication:ApiKeys.HttpHeaderName", "api_key"), ApiKeysQueryStringParameterName = ConfigurationManager.AppSettings.GetValue("VirtoCommerce:Authentication:ApiKeys.QueryStringParameterName", "api_key"), }; OwinConfig.Configure(app, container, authenticationOptions); hangfireLauncher.ConfigureOwin(app, container); RecurringJob.AddOrUpdate <SendNotificationsJobs>("SendNotificationsJob", x => x.Process(), "*/1 * * * *"); var notificationManager = container.Resolve <INotificationManager>(); notificationManager.RegisterNotificationType(() => new RegistrationEmailNotification(container.Resolve <IEmailNotificationSendingGateway>()) { DisplayName = "Registration notification", Description = "This notification sends by email to client when he finish registration", NotificationTemplate = new NotificationTemplate { Body = PlatformNotificationResource.RegistrationNotificationBody, Subject = PlatformNotificationResource.RegistrationNotificationSubject, Language = "en-US" } }); notificationManager.RegisterNotificationType(() => new ResetPasswordEmailNotification(container.Resolve <IEmailNotificationSendingGateway>()) { DisplayName = "Reset password notification", Description = "This notification sends by email to client when he want to reset his password", NotificationTemplate = new NotificationTemplate { Body = PlatformNotificationResource.ResetPasswordNotificationBody, Subject = PlatformNotificationResource.ResetPasswordNotificationSubject, Language = "en-US" } }); var postInitializeModules = moduleCatalog.CompleteListWithDependencies(moduleCatalog.Modules) .Where(m => m.ModuleInstance != null) .ToArray(); foreach (var module in postInitializeModules) { moduleManager.PostInitializeModule(module); } // SignalR var tempCounterManager = new TempPerformanceCounterManager(); GlobalHost.DependencyResolver.Register(typeof(IPerformanceCounterManager), () => tempCounterManager); var hubConfiguration = new HubConfiguration { EnableJavaScriptProxies = false }; app.MapSignalR("/" + moduleInitializerOptions.RoutePrefix + "signalr", hubConfiguration); //Start background sample data installation if in config set concrete zip path (need for demo) var settingManager = container.Resolve <ISettingsManager>(); if (!settingManager.GetValue("VirtoCommerce:SampleDataInstalled", false)) { var sampleDataUrl = ConfigurationManager.AppSettings.GetValue("VirtoCommerce:SampleDataUrl", string.Empty); if (!string.IsNullOrEmpty(sampleDataUrl) && sampleDataUrl.EndsWith(".zip")) { var exportImportController = container.Resolve <PlatformExportImportController>(); exportImportController.TryToImportSampleData(sampleDataUrl); } } }