- 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
80 lines
2.5 KiB
C#
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();
|