Replaced "UseKestrelConfig" with "UseCustomKestrelEndpoints" and renamed the "Kestrel" section to "ServerConfig" in both Program.cs and appsettings.json. Updated Kestrel server configuration to use the new section. Added ExceptionHandlingMiddleware to the pipeline for global exception handling.
96 lines
3.0 KiB
C#
96 lines
3.0 KiB
C#
using DigitalData.UserManager.DependencyInjection;
|
|
using EnvelopeGenerator.Application;
|
|
using EnvelopeGenerator.Infrastructure;
|
|
using EnvelopeGenerator.ServiceHost;
|
|
using EnvelopeGenerator.ServiceHost.Extensions;
|
|
using EnvelopeGenerator.ServiceHost.Middleware;
|
|
using Microsoft.AspNetCore.Localization;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System.Globalization;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
#region Kestrel & Windows Service Configuration
|
|
if (builder.Configuration.GetValue<bool>("UseWindowsService"))
|
|
{
|
|
builder.Host.UseWindowsService();
|
|
}
|
|
|
|
if (builder.Configuration.GetValue<bool>("UseCustomKestrelEndpoints"))
|
|
{
|
|
builder.WebHost.ConfigureKestrel((context, serverOptions) =>
|
|
{
|
|
var serverConfigSection = context.Configuration.GetSection("ServerConfig");
|
|
serverOptions.Configure(serverConfigSection);
|
|
});
|
|
}
|
|
#endregion
|
|
|
|
var config = builder.Configuration;
|
|
var connStr = config.GetConnectionString("Default") ??
|
|
throw new InvalidOperationException("Connection string 'Default' is missing in the configuration.");
|
|
|
|
#region Service configuration
|
|
builder.Services.AddControllers();
|
|
builder.Services.AddHostedService<Worker>();
|
|
builder.Services.AddDistributedSqlServerCache(options =>
|
|
{
|
|
options.ConnectionString = connStr;
|
|
options.SchemaName = "dbo";
|
|
options.TableName = "TBDD_CACHE";
|
|
});
|
|
#pragma warning disable CS0618
|
|
builder.Services.AddFinalizeDocumentJob(config);
|
|
builder.Services.AddEnvelopeGeneratorInfrastructureServices(
|
|
opt =>
|
|
{
|
|
opt.AddDbTriggerParams(config);
|
|
opt.AddDbContext((provider, options) =>
|
|
{
|
|
var logger = provider.GetRequiredService<ILogger<EGDbContext>>();
|
|
options.UseSqlServer(connStr)
|
|
.LogTo(log => logger.LogInformation("{log}", log), Microsoft.Extensions.Logging.LogLevel.Trace)
|
|
.EnableSensitiveDataLogging()
|
|
.EnableDetailedErrors();
|
|
});
|
|
});
|
|
builder.Services.AddEnvelopeGeneratorServices(config);
|
|
builder.Services.AddMemoryCache();
|
|
builder.Services.AddUserManager<EGDbContext>();
|
|
#pragma warning restore CS0618
|
|
builder.Services.AddLocalization();
|
|
#endregion
|
|
|
|
builder.Services.AddEndpointsApiExplorer();
|
|
builder.Services.AddSwaggerGen();
|
|
|
|
var app = builder.Build();
|
|
|
|
app.UseMiddleware<ExceptionHandlingMiddleware>();
|
|
|
|
// Configure the HTTP request pipeline.
|
|
if (app.Environment.IsDevelopment())
|
|
{
|
|
app.UseSwagger();
|
|
app.UseSwaggerUI();
|
|
}
|
|
|
|
#region Localizer
|
|
var supportedCultureNames = config.GetSection("SupportedCultures").Get<string[]>() ?? ["de-DE", "en-US"];
|
|
var supportedCultures = supportedCultureNames.Select(cName => new CultureInfo(cName)).ToList();
|
|
var requestLocalizationOptions = new RequestLocalizationOptions
|
|
{
|
|
SupportedCultures = supportedCultures,
|
|
SupportedUICultures = supportedCultures
|
|
};
|
|
requestLocalizationOptions.RequestCultureProviders.Add(new QueryStringRequestCultureProvider());
|
|
app.UseRequestLocalization(requestLocalizationOptions);
|
|
#endregion
|
|
|
|
app.UseHttpsRedirection();
|
|
|
|
app.UseAuthorization();
|
|
|
|
app.MapControllers();
|
|
|
|
app.Run(); |