using Expose.MyIT.Server.Models; using Expose.MyIT.Shared.Models.Methods; using Serilog; namespace Expose.MyIT.Server; public class Program { public static int Main(string[] args) { LoggerConfiguration loggerConfiguration = new(); WebApplicationBuilder builder = WebApplication.CreateBuilder(args); _ = builder.Configuration.AddUserSecrets(); AppSettings appSettings = Models.Binder.AppSettings.Get(builder.Configuration); if (string.IsNullOrEmpty(appSettings.WorkingDirectoryName)) throw new Exception("Working directory name must have a value!"); Environment.SetEnvironmentVariable("workingDirectory", $"D:/Tmp/{appSettings.WorkingDirectoryName}"); _ = ConfigurationLoggerConfigurationExtensions.Configuration(loggerConfiguration.ReadFrom, builder.Configuration); _ = SerilogHostBuilderExtensions.UseSerilog(builder.Host); Log.Logger = loggerConfiguration.CreateLogger(); Serilog.ILogger log = Log.ForContext(); try { // Add services to the container. _ = builder.Services.AddSingleton(_ => appSettings); _ = builder.Services.AddSingleton(); _ = builder.Services.AddSingleton(); _ = builder.Services.AddControllersWithViews(); _ = builder.Services.AddRazorPages(); WebApplication app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseWebAssemblyDebugging(); _ = app.UseCors(corsPolicyBuilder => corsPolicyBuilder.AllowAnyOrigin()); } else { _ = app.UseCors(corsPolicyBuilder => corsPolicyBuilder.WithOrigins("https://localhost:7130", "http://localhost:5055")); _ = app.UseExceptionHandler("/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. _ = app.UseHsts(); } _ = app.Lifetime.ApplicationStopped.Register(Log.CloseAndFlush); _ = ApplicationBuilderSerilogClientExtensions.UseSerilogIngestion(app); _ = SerilogApplicationBuilderExtensions.UseSerilogRequestLogging(app); _ = app.UseHttpsRedirection(); _ = app.UseBlazorFrameworkFiles(); _ = app.UseStaticFiles(); _ = app.UseRouting(); _ = app.MapRazorPages(); _ = app.MapControllers(); _ = app.MapFallbackToFile("index.html"); log.Information("Starting Web Application"); app.Run(); return 0; } catch (Exception ex) { log.Fatal(ex, "Host terminated unexpectedly"); return 1; } finally { Log.CloseAndFlush(); } } }