Files
Elecciones-2025/Elecciones-Web/src/Elecciones.Api/Program.cs

61 lines
1.7 KiB
C#
Raw Normal View History

using Elecciones.Database;
using Microsoft.EntityFrameworkCore;
2025-08-15 17:31:51 -03:00
using Serilog;
2025-08-15 17:31:51 -03:00
// Esta es la estructura estándar y recomendada.
var builder = WebApplication.CreateBuilder(args);
2025-08-15 17:31:51 -03:00
// 1. Configurar Serilog. Esta es la forma correcta de integrarlo.
builder.Host.UseSerilog((context, services, configuration) => configuration
.ReadFrom.Configuration(context.Configuration)
.ReadFrom.Services(services)
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File("logs/api-.log", rollingInterval: RollingInterval.Day));
2025-08-15 17:31:51 -03:00
// 2. Añadir servicios al contenedor.
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<EleccionesDbContext>(options =>
options.UseSqlServer(connectionString));
builder.Services.AddControllers();
2025-08-15 17:31:51 -03:00
var allowedOrigins = builder.Configuration["AllowedOrigins"]?.Split(',') ?? Array.Empty<string>();
builder.Services.AddCors(options =>
{
options.AddDefaultPolicy(policy =>
{
if (allowedOrigins.Any())
{
policy.WithOrigins(allowedOrigins)
.AllowAnyHeader()
.AllowAnyMethod();
}
});
});
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
2025-08-15 17:31:51 -03:00
// 3. Construir la aplicación.
var app = builder.Build();
2025-08-15 17:31:51 -03:00
// 4. Configurar el pipeline de peticiones HTTP.
// Añadimos el logging de peticiones de Serilog aquí.
app.UseSerilogRequestLogging();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseCors();
app.UseAuthorization();
app.MapControllers();
2025-08-15 17:31:51 -03:00
// 5. Ejecutar la aplicación.
// El try/catch/finally se puede omitir; el logging de Serilog ya se encarga de los errores fatales.
app.Run();