using EgwCoreLib.Lux.Data; using EgwCoreLib.Lux.Data.Services; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using NLog; using NLog.Web; using StackExchange.Redis; using System.Reflection; using Test.UI.Client.Pages; using Test.UI.Components; var builder = WebApplication.CreateBuilder(args); var assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version?.ToString(); var logger = LogManager.Setup() .LoadConfigurationFromAppSettings() .GetCurrentClassLogger(); ConfigurationManager configuration = builder.Configuration; logger.Info("Program.cs: startup"); // Add services to the container. builder.Services.AddRazorComponents() .AddInteractiveServerComponents() .AddInteractiveWebAssemblyComponents(); // costruzione connectionMultiplexer redis... string connStr = configuration.GetConnectionString("Redis") ?? "localhost"; ConnectionMultiplexer redisConn = ConnectionMultiplexer.Connect(connStr); // registrazione in blocco servizi con metodo extension custom var connectionString = builder.Configuration.GetConnectionString("Lux.All") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found."); builder.Services.AddDbContextFactory(options => { var conn = builder.Configuration.GetConnectionString("Lux.All"); options.UseMySql(conn, ServerVersion.AutoDetect(conn), mySqlOptions => { mySqlOptions.EnableStringComparisonTranslations(); }) .EnableSensitiveDataLogging(false) .EnableDetailedErrors(false) .LogTo(_ => { }); // disabilita EF logging; }); builder.Services.AddLuxData(connectionString); // registro connMultiplexer REDIS builder.Services.AddSingleton(redisConn); // registro wrapper servizi REDIS builder.Services.AddSingleton(); builder.Services.AddSingleton(); // Aggiunta servizi specifici builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); var app = builder.Build(); // aggiunt base URL x routing corretto string baseUrl = configuration.GetValue("ServerConf:BaseUrl") ?? ""; app.UsePathBase(baseUrl); logger.Info($"BaseUrl: {baseUrl}"); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseWebAssemblyDebugging(); } else { app.UseExceptionHandler("/Error", createScopeForErrors: true); // 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.UseHttpsRedirection(); app.UseStaticFiles(); app.UseAntiforgery(); app.MapRazorComponents() .AddInteractiveServerRenderMode() .AddInteractiveWebAssemblyRenderMode() .AddAdditionalAssemblies(typeof(Test.UI.Client._Imports).Assembly); app.Run();