public void Configuration(IAppBuilder app) { AppLocalRootPath = HostingEnvironment.MapPath("~/"); var log4NetConfigFilePath = HostingEnvironment.MapPath("~/log4net.config"); if (AppLocalRootPath == null) { Console.WriteLine("Starting in self hosting mode"); AppLocalRootPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); log4NetConfigFilePath = Path.Combine(AppLocalRootPath, "log4net.config"); } var logConfigFileInfo = new FileInfo(log4NetConfigFilePath); if (logConfigFileInfo.Exists) { XmlConfigurator.ConfigureAndWatch(logConfigFileInfo); } else { XmlConfigurator.Configure(); } ConfigureBackend(app); AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); var identityConfiguration = new IdentityConfiguration(IdentityDatabaseContextFactory); var task = identityConfiguration.EnsureDefaultUsersAndRolesAsync(); ConfigureAuth(app); task.GetAwaiter().GetResult(); var properties = new AppProperties(app.Properties); var token = properties.OnAppDisposing; if (token != CancellationToken.None) { token.Register(() => { Storage?.Dispose(); AuthDatabase?.Dispose(); Container?.Dispose(); }); } }