using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Authentication.Negotiate; using Microsoft.AspNetCore.Identity.UI.Services; using SHERPA.BBM.UI.Data; using SHERPA.Data; using StackExchange.Redis; using Microsoft.AspNetCore.Localization; using System.Globalization; using Blazored.LocalStorage; using Blazored.SessionStorage; using Microsoft.AspNetCore.Builder; using ElmahCore.Mvc; using SHERPA.Data.Services; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme) .AddNegotiate(); builder.Services.AddAuthorization(options => { // By default, all incoming requests will be authorized according to the default policy. options.FallbackPolicy = options.DefaultPolicy; }); // configuration setup ConfigurationManager configuration = builder.Configuration; // REDIS setup string connStringRedis = configuration.GetConnectionString("Redis"); string redisSrvAddr = connStringRedis.Substring(0, connStringRedis.IndexOf(":")); // avvio oggetto shared x redis... var redisMultiplexer = ConnectionMultiplexer.Connect(connStringRedis); // abilitazione x email management con MailKit builder.Services.AddTransient(); builder.Services.Configure(options => { options.Host_Address = configuration["ExternalProviders:MailKit:SMTP:Address"]; options.Host_Port = Convert.ToInt32(configuration["ExternalProviders:MailKit:SMTP:Port"]); options.Host_Username = configuration["ExternalProviders:MailKit:SMTP:Account"]; options.Host_Password = configuration["ExternalProviders:MailKit:SMTP:Password"]; options.Sender_EMail = configuration["ExternalProviders:MailKit:SMTP:SenderEmail"]; options.Sender_Name = configuration["ExternalProviders:MailKit:SMTP:SenderName"]; }); // Add services to the container. // Elmah builder.Services.AddElmah(); //string elmaConn = "Data Source=SQL2016DEV;Initial Catalog=Elmah;User ID=sa;Password=keyhammer;integrated security=False;MultipleActiveResultSets=True;App=SHERPA.BBM;"; //services.AddElmah(options => //{ // options.ConnectionString = elmaConn; //}); builder.Services.AddLocalization(); builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddHttpContextAccessor(); builder.Services.AddSingleton(redisMultiplexer); builder.Services.AddBlazoredLocalStorage(); builder.Services.AddBlazoredSessionStorage(); var app = builder.Build(); // aggiunt base URL x routing corretto // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { 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.UsePathBase(configuration["RuntimeOpt:BaseUrl"]); // cultura IT... var supportedCultures = new[]{ new CultureInfo("it-IT") }; app.UseRequestLocalization(new RequestLocalizationOptions { DefaultRequestCulture = new RequestCulture("it-IT"), SupportedCultures = supportedCultures, FallBackToParentCultures = false }); CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("it-IT"); // Registrazione Elmah: // https://github.com/ElmahCore/ElmahCore app.UseElmah(); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapBlazorHub(); app.MapFallbackToPage("/_Host"); app.Run();