Program.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Application;
  2. using Infrastructure;
  3. using SharedKernel;
  4. using Web.Api;
  5. using Web.Api.Extensions;
  6. using System.Reflection;
  7. var builder = WebApplication.CreateBuilder(args);
  8. var settings = builder.Configuration.Get<AppSettings>()!;
  9. Console.Title = $"{settings.App.Name} API";
  10. Console.WriteLine($"ENV={builder.Environment.EnvironmentName}");
  11. Console.WriteLine($"현재 시간: {DateTime.Now} / {TimeZoneInfo.Local.Id}");
  12. builder.Services.Configure<AppSettings>(builder.Configuration);
  13. builder.Services
  14. .AddApplication()
  15. .AddPresentation()
  16. .AddApiInfrastructure(builder.Configuration);
  17. // CORS
  18. builder.Services.AddCors(options =>
  19. {
  20. options.AddPolicy(settings.CorsPolicy.Name, policy =>
  21. {
  22. policy
  23. .WithOrigins(settings.CorsPolicy.AllowedOrigins.ToArray())
  24. .AllowAnyHeader()
  25. .AllowAnyMethod()
  26. .AllowCredentials()
  27. .SetPreflightMaxAge(TimeSpan.FromSeconds(settings.CorsPolicy.PreflightMaxAgeSeconds));
  28. });
  29. });
  30. builder.Services.AddEndpoints(Assembly.GetExecutingAssembly());
  31. builder.Logging.AddConsole();
  32. /**
  33. * =======================================================================================================================================================
  34. */
  35. var app = builder.Build();
  36. /**
  37. * =======================================================================================================================================================
  38. */
  39. if (app.Environment.IsDevelopment())
  40. {
  41. app.UseSwagger();
  42. app.UseSwaggerUI();
  43. }
  44. // 상태 확인
  45. app.MapHealthChecks("/health");
  46. app.UseExceptionHandler();
  47. app.UseCors(settings.CorsPolicy.Name);
  48. app.UseAuthentication();
  49. app.UseAuthorization();
  50. app.MapEndpoints();
  51. app.Run();