public AppLoaderFunc Create(AppLoaderFunc nextLoader) { return((name, errors) => { Assembly assembly = null; string error = null; try { assembly = _host.GetEntryPoint(); if (assembly == null) { error = "Unable to resolve the application entry point."; } } catch (Exception ex) { error = ex.Message; } if (assembly == null) { Trace.TraceError(error); return app => { app.Run(async context => { context.Response.ContentType = "text/plain"; await context.Response.WriteAsync(error); }); }; } // determine actual startup class to load if (string.IsNullOrEmpty(name)) { var startupType = assembly.DefinedTypes.SingleOrDefault(t => string.Equals(t.Name, "Startup", StringComparison.OrdinalIgnoreCase)); if (startupType != null) { name = startupType.AssemblyQualifiedName; } } // pass through to other loaders var config = nextLoader.Invoke(name, errors); // don't wrap null result if (config == null) { return null; } // but do wrap configuration if startup was found return app => { app.Properties["host.AppName"] = assembly.GetName().Name; var resolver = _host.GetService <Func <string, object> >(HostServices.ResolveAssemblyReference); app.Properties[HostServices.ResolveAssemblyReference] = resolver; config(app); }; }); }
/// <summary> /// Create a new chained app loader. /// </summary> /// <param name="nextLoader"></param> /// <returns></returns> public virtual AppLoaderFunc Create(AppLoaderFunc nextLoader) { var loader = new DefaultLoader(nextLoader, _activator.Activate); return(loader.Load); }
/// <summary> /// Create a new chained app loader. /// </summary> /// <param name="nextLoader"></param> /// <returns></returns> public virtual AppLoaderFunc Create(AppLoaderFunc nextLoader) { var loader = new DefaultLoader(nextLoader, _activator.Activate); return loader.Load; }