using Hangfire; using Hangfire.SqlServer; using Microsoft.AspNetCore.Builder; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NLog.Web; using System; using UserManagement.API; using UserManagement.API.Helpers; using UserManagement.Domain; var builder = WebApplication.CreateBuilder(args); builder.Services.AddTransient(); var startup = new Startup(builder.Configuration); startup.ConfigureServices(builder.Services); builder.Logging.ClearProviders(); builder.Host.UseNLog(); var connectionString = builder.Configuration.GetConnectionString("UserDbConnectionString"); // Add Hangfire services. builder.Services.AddHangfire(configuration => configuration .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() .UseSqlServerStorage(connectionString, new SqlServerStorageOptions { CommandBatchMaxTimeout = TimeSpan.FromMinutes(5), SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5), QueuePollInterval = TimeSpan.Zero, UseRecommendedIsolationLevel = true, DisableGlobalLocks = true })); // Add the processing server as IHostedService builder.Services.AddHangfireServer(); var app = builder.Build(); try { using (var serviceScope = app.Services.GetService().CreateScope()) { var context = serviceScope.ServiceProvider.GetRequiredService(); context.Database.Migrate(); } } catch (System.Exception) { throw; } ILoggerFactory loggerFactory = app.Services.GetRequiredService(); startup.Configure(app, loggerFactory, app.Environment); JobService jobService = app.Services.GetRequiredService(); jobService.StartScheduler(); app.Run();