using System; using System.Collections.Generic; using System.Diagnostics; using System.Text; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting.Internal; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.ObjectPool; namespace GenericWebHost { public static class WebHostExtensions { public static IHostBuilder ConfigureWebHost(this IHostBuilder builder, Action configureApp) { return builder.ConfigureServices((bulderContext, services) => { services.Configure(options => { options.ConfigureApp = configureApp; }); services.AddHostedService(); var listener = new DiagnosticListener("Microsoft.AspNetCore"); services.AddSingleton(listener); services.AddSingleton(listener); services.AddTransient(); services.AddScoped(); // Conjure up a RequestServices services.AddTransient(); services.AddTransient, DefaultServiceProviderFactory>(); // Ensure object pooling is available everywhere. services.AddSingleton(); }); } } }