/// <summary> /// Add Jasper to an ASP.Net Core application with a pre-built JasperOptionsBuilder /// </summary> /// <param name="builder"></param> /// <param name="registry"></param> /// <returns></returns> public static IWebHostBuilder UseJasper(this IWebHostBuilder builder, JasperRegistry registry) { registry.ConfigureWebHostBuilder(builder); // ASP.Net Core will freak out if this isn't there builder.UseSetting(WebHostDefaults.ApplicationKey, registry.ApplicationAssembly.FullName); JasperHost.ApplyExtensions(registry); registry.HttpRoutes.StartFindingRoutes(registry.ApplicationAssembly); registry.Messaging.StartCompiling(registry); registry.Settings.Apply(registry.Services); builder.ConfigureServices(s => { if (registry.HttpRoutes.AspNetCoreCompliance == ComplianceMode.GoFaster) { s.RemoveAll(x => x.ServiceType == typeof(IStartupFilter) && x.ImplementationType == typeof(AutoRequestServicesStartupFilter)); } s.AddSingleton <IHostedService, JasperActivator>(); s.AddRange(registry.CombineServices()); s.AddSingleton(registry); s.AddSingleton <IServiceProviderFactory <ServiceRegistry>, LamarServiceProviderFactory>(); s.AddSingleton <IServiceProviderFactory <IServiceCollection>, LamarServiceProviderFactory>(); s.AddSingleton <IStartupFilter>(new RegisterJasperStartupFilter()); }); return(builder); }