Пример #1
0
        /// <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);
        }