expose-myit/Server/Program.cs

83 lines
3.4 KiB
C#

using Expose.MyIT.Server.Models;
using Expose.MyIT.Shared.Models.Stateless;
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<Program>();
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<Program>();
try
{
// Add services to the container.
AppSettingsRepository appSettingsRepository = new(appSettings);
ClientSettingsRepository clientSettingsRepository = new(appSettings);
_ = builder.Services.AddSingleton(_ => appSettings);
_ = builder.Services.AddSingleton<ISsaOrderRepository, SsaOrderRepository>();
_ = builder.Services.AddSingleton<IAppSettingsRepository>(_ => appSettingsRepository);
_ = builder.Services.AddSingleton<IClientSettingsRepository>(_ => clientSettingsRepository);
_ = builder.Services.AddSingleton<IServiceShopOrderRepository, ServiceShopOrderRepository>();
_ = 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", "http://mestsa008.infineon.com:50199", "http://mestsa008.infineon.com: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();
}
}
}