Program.cs 2.1 KB

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