Program.cs 1.9 KB

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