The app now checks configuration values to optionally run as a Windows Service ("UseWindowsService") and/or apply custom Kestrel server settings from the "Kestrel" config section ("UseKestrelConfig"). These changes improve deployment flexibility.
93 lines
2.9 KiB
C#
93 lines
2.9 KiB
C#
using DigitalData.UserManager.DependencyInjection;
|
|
using EnvelopeGenerator.Application;
|
|
using EnvelopeGenerator.Infrastructure;
|
|
using EnvelopeGenerator.ServiceHost;
|
|
using EnvelopeGenerator.ServiceHost.Extensions;
|
|
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>("UseKestrelConfig"))
|
|
{
|
|
builder.WebHost.ConfigureKestrel((context, serverOptions) =>
|
|
{
|
|
var kestrelSection = context.Configuration.GetSection("Kestrel");
|
|
serverOptions.Configure(kestrelSection);
|
|
});
|
|
}
|
|
#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();
|
|
|
|
// 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(); |