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); }
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(); }); }