Пример #1
0
        public static IServiceCollection AddHealthChecks(this IServiceCollection services, Action <IHealthCheckBuilder> configureHealthCheckBuilder, IAsyncPolicy <HttpResponseMessage>[] policies)
        {
            if (configureHealthCheckBuilder == null)
            {
                throw new ArgumentNullException(nameof(configureHealthCheckBuilder));
            }

            if (policies == null)
            {
                throw new ArgumentNullException(nameof(policies));
            }

            var httpClient = services
                             .AddHttpClient <IHealthCheckHttpClient, HealthCheckHttpClient>()
                             .AddPolicyHandlers(policies);

            services.AddTransient <IHealthCheckService, HealthCheckService>();

            var builder = new HealthCheckBuilder();

            configureHealthCheckBuilder(builder);

            foreach (var factory in builder.GetAll())
            {
                services.AddTransient(sp => factory(sp));
            }

            return(services);
        }