Пример #1
0
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime lifetime,
                              IConsulRegistrarService consulRegistrarService)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseSerilogRequestLogging();

            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "Sample Api V1");
                c.RoutePrefix = string.Empty;
            });

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.MapHealthChecks("/health");
            });

            app.UseApplicationLifetimeTriggers(lifetime, _configuration, consulRegistrarService);
        }
Пример #2
0
        public static void UseApplicationLifetimeTriggers(this IApplicationBuilder app, IHostApplicationLifetime lifetime, IConfiguration configuration, IConsulRegistrarService consulRegistrarService)
        {
            var cancelToken  = new CancellationTokenSource();
            var consulConfig = configuration.GetSection(nameof(Models.Consul)).Get <Models.Consul>();

            lifetime.ApplicationStarted.Register(async() => await consulRegistrarService.StartAsync(consulConfig, app.ServerFeatures, cancelToken.Token));
            lifetime.ApplicationStopping.Register(async() =>
            {
                await consulRegistrarService.StopAsync(cancelToken.Token);
                Log.CloseAndFlush();
            });
        }