Files
EnvelopeGenerator/EnvelopeGenerator.ServiceHost/Program.cs
TekH bcf4e63f7c Add distributed cache, localization, and infra services
- Add DigitalData.Core.API and SQL Server distributed cache dependencies
- Register EnvelopeGenerator.Application project reference
- Configure distributed SQL Server cache and memory cache
- Register infrastructure, application, and user management services
- Set up EF Core with SQL Server and detailed logging
- Enable localization with configurable supported cultures
- Improve modularity and extensibility of service registration
2026-04-09 13:36:40 +02:00

80 lines
2.5 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);
// Add services to the container.
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();