/// <summary>
        /// UseHealthChecks
        /// </summary>
        /// <param name="services"></param>
        /// <param name="connectionStringConfig"></param>
        /// <param name="healthChecksConfig"></param>
        /// <returns></returns>
        public static IServiceCollection ConfigureHealthChecks(this IServiceCollection services,
                                                               ConnectionStringsConfigModel connectionStringConfig, HealthChecksConfigModel healthChecksConfig)
        {
            services.AddHealthChecks().AddApplicationInsightsPublisher()
            .AddSqlServer(connectionStringConfig.Test, name: Literal.Master)
            .AddSqlServer(connectionStringConfig.TestReadOnly, name: Literal.ReadOnly);

            services.AddHealthChecksUI(opt =>
            {
                opt.SetEvaluationTimeInSeconds(healthChecksConfig.EvaluationTimeOnSeconds);                                     //time in seconds between check
                opt.SetMinimumSecondsBetweenFailureNotifications(healthChecksConfig.MinimumSecondsBetweenFailureNotifications); //maximum history of checks
                opt.AddHealthCheckEndpoint(Literal.SwaggerTitle, Literal.Health);                                               //map health check api
            })
            .AddInMemoryStorage();                                                                                              //Storing in memory

            return(services);
        }
示例#2
0
        /// <summary>
        /// ConfigureServices
        /// </summary>
        /// <param name="services"></param>
        public void ConfigureServices(IServiceCollection services)
        {
            var connectionStringsConfigModel = new ConnectionStringsConfigModel();

            Configuration.GetSection(Literal.ConnectionStrings).Bind(connectionStringsConfigModel);


            var healthChecksConfigModel = new HealthChecksConfigModel();

            Configuration.GetSection(Literal.HealthChecksUI).Bind(healthChecksConfigModel);

            services.AddControllers();
            services.AddSwagger();
            services.ConfigureHealthChecks(connectionStringsConfigModel, healthChecksConfigModel);
            services.AddContext(Configuration, connectionStringsConfigModel);

            //for reference loop handling
            //services.AddControllersWithViews().AddJsonOptions(options =>
            //{
            //    options.JsonSerializerOptions.ReferenceHandler = System.Text.Json.Serialization.ReferenceHandler.Preserve;
            //});

            services.AddTransient <IPersonService, PersonService>();
        }
示例#3
0
        /// <summary>
        /// Added contexts and sql data log
        /// </summary>
        /// <param name="services"></param>
        /// <param name="configuration"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public static IServiceCollection AddContext(this IServiceCollection services, IConfiguration configuration, ConnectionStringsConfigModel config)
        {
            var provider = new NLogLoggerProvider();

            _logger        = provider.CreateLogger(Literal.SqlLog);
            _configuration = configuration;

            services.AddDbContext <DotNetConfContext>(options =>
            {
                options.UseSqlServer(config.Test, sqlOptions => sqlOptions.MigrationsAssembly(typeof(DotNetConfContext).GetTypeInfo().Assembly.GetName().Name))
                .LogTo(Log, new[] { RelationalEventId.CommandExecuted })
                .EnableSensitiveDataLogging();        // uncomment this
            }, ServiceLifetime.Transient
                                                      );

            services.AddDbContext <ReadOnlyDbContext>(options =>
            {
                options.UseSqlServer(config.TestReadOnly, sqlOptions => sqlOptions.MigrationsAssembly(typeof(ReadOnlyDbContext).GetTypeInfo().Assembly.GetName().Name))
                .LogTo(Log, new[] { RelationalEventId.CommandExecuted });
                //.EnableSensitiveDataLogging();
            }, ServiceLifetime.Transient
                                                      );

            return(services);
        }