/// <summary> /// Initializes the AppHost. /// Calls the <see cref="Configure"/> method. /// Should be called before start. /// </summary> public virtual ServiceStackHost Init() { if (Instance != null) { throw new InvalidDataException($"ServiceStackHost.Instance has already been set ({Instance.GetType().Name})"); } Service.GlobalResolver = Instance = this; Config = HostConfig.ResetInstance(); OnConfigLoad(); AbstractVirtualFileBase.ScanSkipPaths = Config.ScanSkipPaths; ResourceVirtualDirectory.EmbeddedResourceTreatAsFiles = Config.EmbeddedResourceTreatAsFiles; Config.DebugMode = GetType().GetAssembly().IsDebugBuild(); if (Config.DebugMode) { Plugins.Add(new RequestInfoFeature()); } OnBeforeInit(); ServiceController.Init(); Configure(Container); if (Config.StrictMode == null && Config.DebugMode) { Config.StrictMode = true; } ConfigurePlugins(); List <IVirtualPathProvider> pathProviders = null; if (VirtualFileSources == null) { pathProviders = GetVirtualFileSources().Where(x => x != null).ToList(); VirtualFileSources = pathProviders.Count > 1 ? new MultiVirtualFiles(pathProviders.ToArray()) : pathProviders.First(); } if (VirtualFiles == null) { VirtualFiles = pathProviders?.FirstOrDefault(x => x is FileSystemVirtualFiles) as IVirtualFiles ?? GetVirtualFileSources().FirstOrDefault(x => x is FileSystemVirtualFiles) as IVirtualFiles; } OnAfterInit(); LogInitComplete(); HttpHandlerFactory.Init(); return(this); }
public virtual ServiceStackHost Init() { if (Instance != null) { throw new InvalidDataException("ServiceStackHost.Instance has already been set"); } Service.GlobalResolver = Instance = this; Config = HostConfig.ResetInstance(); OnConfigLoad(); Config.DebugMode = GetType().Assembly.IsDebugBuild(); if (Config.DebugMode) { Plugins.Add(new RequestInfoFeature()); } OnBeforeInit(); ServiceController.Init(); Configure(Container); ConfigurePlugins(); if (VirtualPathProvider == null) { var pathProviders = new List <IVirtualPathProvider> { new FileSystemVirtualPathProvider(this, Config.WebHostPhysicalPath) }; pathProviders.AddRange(Config.EmbeddedResourceBaseTypes.Distinct().Map(x => new ResourceVirtualPathProvider(this, x))); pathProviders.AddRange(Config.EmbeddedResourceSources.Distinct().Map(x => new ResourceVirtualPathProvider(this, x))); VirtualPathProvider = pathProviders.Count > 1 ? new MultiVirtualPathProvider(this, pathProviders.ToArray()) : pathProviders.First(); } OnAfterInit(); var elapsed = DateTime.UtcNow - this.StartedAt; Log.InfoFormat("Initializing Application took {0}ms", elapsed.TotalMilliseconds); return(this); }
public virtual ServiceStackHost Init() { if (Instance != null) { throw new InvalidDataException("ServiceStackHost.Instance has already been set"); } Service.GlobalResolver = Instance = this; Config = HostConfig.ResetInstance(); OnConfigLoad(); Config.DebugMode = GetType().Assembly.IsDebugBuild(); if (Config.DebugMode) { Plugins.Add(new RequestInfoFeature()); } OnBeforeInit(); ServiceController.Init(); Configure(Container); ConfigurePlugins(); List <IVirtualPathProvider> pathProviders = null; if (VirtualFileSources == null) { pathProviders = GetVirtualFileSources().Where(x => x != null).ToList(); VirtualFileSources = pathProviders.Count > 1 ? new MultiVirtualPathProvider(this, pathProviders.ToArray()) : pathProviders.First(); } if (VirtualFiles == null) { VirtualFiles = (pathProviders != null ? pathProviders.FirstOrDefault(x => x is FileSystemVirtualPathProvider) : null) as IVirtualFiles ?? GetVirtualFileSources().FirstOrDefault(x => x is FileSystemVirtualPathProvider) as IVirtualFiles; } OnAfterInit(); LogInitComplete(); return(this); }
public virtual ServiceStackHost Init() { if (Instance != null) { throw new InvalidDataException("ServiceStackHost.Instance has already been set"); } Service.GlobalResolver = Instance = this; Config = HostConfig.ResetInstance(); OnConfigLoad(); Config.DebugMode = GetType().Assembly.IsDebugBuild(); if (Config.DebugMode) { Plugins.Add(new RequestInfoFeature()); } OnBeforeInit(); ServiceController.Init(); Configure(Container); ConfigurePlugins(); if (VirtualPathProvider == null) { var pathProviders = GetVirtualPathProviders(); VirtualPathProvider = pathProviders.Count > 1 ? new MultiVirtualPathProvider(this, pathProviders.ToArray()) : pathProviders.First(); } OnAfterInit(); LogInitComplete(); return(this); }
/// <summary> /// Initializes the AppHost. /// Calls the <see cref="Configure"/> method. /// Should be called before start. /// </summary> public virtual ServiceStackHost Init() { if (Instance != null) { throw new InvalidDataException($"ServiceStackHost.Instance has already been set ({Instance.GetType().Name})"); } Service.GlobalResolver = Instance = this; RegisterLicenseKey(AppSettings.GetNullableString("servicestack:license")); if (ServiceController == null) { ServiceController = CreateServiceController(ServiceAssemblies.ToArray()); } Config = HostConfig.ResetInstance(); OnConfigLoad(); AbstractVirtualFileBase.ScanSkipPaths = Config.ScanSkipPaths; ResourceVirtualDirectory.EmbeddedResourceTreatAsFiles = Config.EmbeddedResourceTreatAsFiles; OnBeforeInit(); ServiceController.Init(); BeforeConfigure.Each(fn => fn(this)); Configure(Container); AfterConfigure.Each(fn => fn(this)); if (Config.StrictMode == null && Config.DebugMode) { Config.StrictMode = true; } if (!Config.DebugMode) { Plugins.RemoveAll(x => x is RequestInfoFeature); } ConfigurePlugins(); List <IVirtualPathProvider> pathProviders = null; if (VirtualFileSources == null) { pathProviders = GetVirtualFileSources().Where(x => x != null).ToList(); VirtualFileSources = pathProviders.Count > 1 ? new MultiVirtualFiles(pathProviders.ToArray()) : pathProviders.First(); } if (VirtualFiles == null) { VirtualFiles = pathProviders?.FirstOrDefault(x => x is FileSystemVirtualFiles) as IVirtualFiles ?? GetVirtualFileSources().FirstOrDefault(x => x is FileSystemVirtualFiles) as IVirtualFiles; } OnAfterInit(); PopulateArrayFilters(); LogInitComplete(); HttpHandlerFactory.Init(); return(this); }
/// <summary> /// Initializes the AppHost. /// Calls the <see cref="Configure"/> method. /// Should be called before start. /// </summary> public virtual ServiceStackHost Init() { if (Instance != null) { throw new InvalidDataException($"ServiceStackHost.Instance has already been set ({Instance.GetType().Name})"); } Service.GlobalResolver = Instance = this; //RegisterLicenseKey(AppSettings.GetNullableString("servicestack:license")); var scanAssemblies = new List <Assembly>(ServiceAssemblies); scanAssemblies.AddIfNotExists(GetType().Assembly); //var scanTypes = scanAssemblies.SelectMany(x => x.GetTypes()) // .Where(x => (x.HasInterface(typeof(IPreConfigureAppHost)) // || x.HasInterface(typeof(IConfigureAppHost)) // || x.HasInterface(typeof(IAfterInitAppHost)))) // .ToArray(); //var startupConfigs = scanTypes.Where(x => !x.HasInterface(typeof(IPlugin))) // .Select(x => x.CreateInstance()).WithPriority(); //var configInstances = startupConfigs.PriorityOrdered(); //var preStartupConfigs = startupConfigs.PriorityBelowZero(); //var postStartupConfigs = startupConfigs.PriorityZeroOrAbove(); //void RunPreConfigure(object instance) //{ // try // { // if (instance is IPreConfigureAppHost preConfigureAppHost) // preConfigureAppHost.PreConfigure(this); // } // catch (Exception ex) // { // OnStartupException(ex); // } //} //var priorityPlugins = Plugins.WithPriority().PriorityOrdered().Map(x => (IPlugin)x); //priorityPlugins.ForEach(RunPreConfigure); //configInstances.ForEach(RunPreConfigure); if (ServiceController == null) { ServiceController = CreateServiceController(ServiceAssemblies.ToArray()); } Config = HostConfig.ResetInstance(); OnConfigLoad(); //AbstractVirtualFileBase.ScanSkipPaths = Config.ScanSkipPaths; //ResourceVirtualDirectory.EmbeddedResourceTreatAsFiles = Config.EmbeddedResourceTreatAsFiles; OnBeforeInit(); ServiceController.Init(); //void RunConfigure(object instance) //{ // try // { // //if (instance is IConfigureAppHost configureAppHost) // //configureAppHost.Configure(this); // } // catch (Exception ex) // { // OnStartupException(ex); // } //} //preStartupConfigs.ForEach(RunConfigure); //BeforeConfigure.Each(fn => fn(this)); Configure(Container); //AfterConfigure.Each(fn => fn(this)); //postStartupConfigs.ForEach(RunConfigure); if (Config.StrictMode == null && Config.DebugMode) { Config.StrictMode = true; } //if (!Config.DebugMode) // Plugins.RemoveAll(x => x is RequestInfoFeature); //Some plugins need to initialize before other plugins are registered. Plugins.ToList().ForEach(RunPreInitPlugin); //configInstances.ForEach(RunPreInitPlugin); List <IVirtualPathProvider> pathProviders = null; if (VirtualFileSources == null) { pathProviders = GetVirtualFileSources().Where(x => x != null).ToList(); //VirtualFileSources = pathProviders.Count > 1 // ? new MultiVirtualFiles(pathProviders.ToArray()) // : pathProviders.First(); } //if (VirtualFiles == null) // VirtualFiles = pathProviders?.FirstOrDefault(x => x is FileSystemVirtualFiles) as IVirtualFiles // ?? GetVirtualFileSources().FirstOrDefault(x => x is FileSystemVirtualFiles) as IVirtualFiles; OnAfterInit(); //configInstances.ForEach(RunPostInitPlugin); PopulateArrayFilters(); LogInitComplete(); HttpHandlerFactory.Init(); foreach (var callback in AfterInitCallbacks) { callback(this); } Plugins.ForEach(RunAfterInitAppHost); //configInstances.ForEach(RunAfterInitAppHost); ReadyAt = DateTime.UtcNow; return(this); }