diff --git a/src/Paralax.Metrics.AppMetrics/src/Paralax.Metrics.AppMetrics/Extensions.cs b/src/Paralax.Metrics.AppMetrics/src/Paralax.Metrics.AppMetrics/Extensions.cs index e3c352a..d5dc1c1 100644 --- a/src/Paralax.Metrics.AppMetrics/src/Paralax.Metrics.AppMetrics/Extensions.cs +++ b/src/Paralax.Metrics.AppMetrics/src/Paralax.Metrics.AppMetrics/Extensions.cs @@ -23,9 +23,9 @@ public static class Extensions private const string AppSectionName = "app"; private const string RegistryName = "metrics.metrics"; - [Description("For the time being it sets Kestrel's AllowSynchronousIO = true, see https://github.com/AppMetrics/AppMetrics/issues/396")] - public static IServiceCollection AddMetrics(this IServiceCollection services, - IConfiguration configuration, string metricsSectionName = MetricsSectionName, string appSectionName = AppSectionName) + [Description("For the time being it sets Kestrel's AllowSynchronousIO = true, see https://github.com/AppMetrics/AppMetrics/issues/396")] + public static IParalaxBuilder AddMetrics(this IParalaxBuilder builder, + string metricsSectionName = MetricsSectionName, string appSectionName = AppSectionName) { if (string.IsNullOrWhiteSpace(metricsSectionName)) { @@ -37,15 +37,15 @@ public static IServiceCollection AddMetrics(this IServiceCollection services, appSectionName = AppSectionName; } - var metricsOptions = configuration.GetSection(metricsSectionName).Get(); - var appOptions = configuration.GetSection(appSectionName).Get(); + var metricsOptions = builder.GetOptions(metricsSectionName); + var appOptions = builder.GetOptions(appSectionName); - return services.AddMetrics(metricsOptions, appOptions); + return builder.AddMetrics(metricsOptions, appOptions); } [Description("For the time being it sets Kestrel's AllowSynchronousIO = true, see https://github.com/AppMetrics/AppMetrics/issues/396")] - public static IServiceCollection AddMetrics(this IServiceCollection services, - Func buildOptions, IConfiguration configuration, string appSectionName = AppSectionName) + public static IParalaxBuilder AddMetrics(this IParalaxBuilder builder, + Func buildOptions, string appSectionName = AppSectionName) { if (string.IsNullOrWhiteSpace(appSectionName)) { @@ -53,23 +53,23 @@ public static IServiceCollection AddMetrics(this IServiceCollection services, } var metricsOptions = buildOptions(new MetricsOptionsBuilder()).Build(); - var appOptions = configuration.GetSection(appSectionName).Get(); + var appOptions = builder.GetOptions(appSectionName); - return services.AddMetrics(metricsOptions, appOptions); + return builder.AddMetrics(metricsOptions, appOptions); } [Description("For the time being it sets Kestrel's and IIS ServerOptions AllowSynchronousIO = true, see https://github.com/AppMetrics/AppMetrics/issues/396")] - public static IServiceCollection AddMetrics(this IServiceCollection services, MetricsOptions metricsOptions, + public static IParalaxBuilder AddMetrics(this IParalaxBuilder builder, MetricsOptions metricsOptions, AppOptions appOptions) { - services.AddSingleton(metricsOptions); + builder.Services.AddSingleton(metricsOptions); if (!_initialized && metricsOptions.Enabled) { _initialized = true; //TODO: Remove once fixed https://github.com/AppMetrics/AppMetrics/issues/396 - services.Configure(o => o.AllowSynchronousIO = true); - services.Configure(o => o.AllowSynchronousIO = true); + builder.Services.Configure(o => o.AllowSynchronousIO = true); + builder.Services.Configure(o => o.AllowSynchronousIO = true); var metricsBuilder = new MetricsBuilder().Configuration.Configure(cfg => { @@ -119,20 +119,20 @@ public static IServiceCollection AddMetrics(this IServiceCollection services, Me var metrics = metricsBuilder.Build(); var metricsWebHostOptions = GetMetricsWebHostOptions(metricsOptions); - services.AddHealth(); - services.AddHealthEndpoints(); - services.AddMetricsTrackingMiddleware(); - services.AddMetricsEndpoints(); - services.AddSingleton(new DefaultMetricsEndpointsStartupFilter()); - services.AddSingleton(new DefaultHealthEndpointsStartupFilter()); - services.AddSingleton(new DefaultMetricsTrackingStartupFilter()); - services.AddMetricsReportingHostedService(metricsWebHostOptions.UnobservedTaskExceptionHandler); - services.AddMetricsEndpoints(metricsWebHostOptions.EndpointOptions); - services.AddMetricsTrackingMiddleware(metricsWebHostOptions.TrackingMiddlewareOptions); - services.AddMetrics(metrics); + builder.Services.AddHealth(); + builder.Services.AddHealthEndpoints(); + builder.Services.AddMetricsTrackingMiddleware(); + builder.Services.AddMetricsEndpoints(); + builder.Services.AddSingleton(new DefaultMetricsEndpointsStartupFilter()); + builder.Services.AddSingleton(new DefaultHealthEndpointsStartupFilter()); + builder.Services.AddSingleton(new DefaultMetricsTrackingStartupFilter()); + builder.Services.AddMetricsReportingHostedService(metricsWebHostOptions.UnobservedTaskExceptionHandler); + builder.Services.AddMetricsEndpoints(metricsWebHostOptions.EndpointOptions); + builder.Services.AddMetricsTrackingMiddleware(metricsWebHostOptions.TrackingMiddlewareOptions); + builder.Services.AddMetrics(metrics); } - return services; + return builder; } private static MetricsWebHostOptions GetMetricsWebHostOptions(MetricsOptions metricsOptions)