|
51 | 51 | var envVars = Environment.GetEnvironmentVariables(); |
52 | 52 | foreach (DictionaryEntry envVar in envVars) |
53 | 53 | { |
54 | | - var key = envVar.Key?.ToString(); |
| 54 | + var key = envVar.Key.ToString(); |
55 | 55 | if (!string.IsNullOrWhiteSpace(key) && (key.StartsWith("MONGODB_") || key.StartsWith("JWT_") || key.StartsWith("EMAIL_") || |
56 | 56 | key.StartsWith("CLOUDINARY_") || key.StartsWith("ConnectionStrings__") || |
57 | 57 | key.StartsWith("Jwt__") || key.StartsWith("EmailSettings__") || key.StartsWith("CloudinarySettings__"))) |
|
149 | 149 | builder.Configuration.AddJsonFile("appsettings.Docker.json", optional: true); |
150 | 150 | } |
151 | 151 |
|
| 152 | + // Validate configuration early (before building the app) |
| 153 | + // Create a temporary configuration to validate settings |
| 154 | + var tempConfig = new ConfigurationBuilder() |
| 155 | + .AddConfiguration(builder.Configuration) |
| 156 | + .Build(); |
| 157 | + |
| 158 | + // Create a temporary logger for validation |
| 159 | + using var loggerFactory = LoggerFactory.Create(builder => builder.AddSerilog()); |
| 160 | + var tempLogger = loggerFactory.CreateLogger<Program>(); |
| 161 | + |
| 162 | + var isConfigValid = await ConfigurationValidator.ValidateConfigurationAsync(tempConfig, tempLogger); |
| 163 | + if (!isConfigValid) |
| 164 | + { |
| 165 | + Log.Fatal("Configuration validation failed. Application cannot start."); |
| 166 | + Environment.Exit(1); |
| 167 | + } |
| 168 | + Log.Information("Configuration validation completed successfully"); |
| 169 | + |
152 | 170 | // Use Serilog for logging |
153 | 171 | builder.Host.UseSerilog(); |
154 | 172 |
|
|
398 | 416 | } |
399 | 417 | } |
400 | 418 |
|
401 | | -// Validate configuration before starting the application |
402 | | -var configLogger = app.Services.GetRequiredService<ILogger<Program>>(); |
403 | | -var configuration = app.Services.GetRequiredService<IConfiguration>(); |
404 | | - |
405 | | -var isConfigValid = await ConfigurationValidator.ValidateConfigurationAsync(configuration, configLogger); |
406 | | -if (!isConfigValid) |
407 | | -{ |
408 | | - Log.Fatal("Configuration validation failed. Application cannot start."); |
409 | | - Environment.Exit(1); |
410 | | -} |
411 | | - |
412 | | -Log.Information("Configuration validation completed successfully"); |
| 419 | +// Configuration validation already completed earlier |
413 | 420 |
|
414 | 421 | // Log startup information |
415 | 422 | Log.Information("Application configuration:"); |
|
0 commit comments