using OpcPks.Core.Services; using OpcPks.Core.Models; var builder = WebApplication.CreateBuilder(args); // ----------------------------------------------------------- // 1. 공통 경로 설정 // ----------------------------------------------------------- string baseDataPath = "/home/pacer/projects/OpcPksPlatform/OpcPks.Core/Data"; // ----------------------------------------------------------- // 2. 서비스 등록 (Dependency Injection) // ----------------------------------------------------------- builder.Services.AddControllersWithViews(); // [수정] OpcSessionManager를 먼저 등록해야 Generator에서 가져다 쓸 수 있습니다. builder.Services.AddSingleton(); // [수정] 팩토리 메서드를 사용하여 OpcSessionManager를 주입(Injection)합니다. builder.Services.AddSingleton(sp => { var sessionManager = sp.GetRequiredService(); return new CertificateGenerator(baseDataPath, sessionManager); }); var app = builder.Build(); // ----------------------------------------------------------- // 3. 실행 환경 설정 // ----------------------------------------------------------- if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } // ----------------------------------------------------------- // 4. 미들웨어 및 라우팅 설정 // ----------------------------------------------------------- app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); // 컨트롤러 루트 매핑 app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); // [이미지: ASP.NET Core Dependency Injection Container flow] // ----------------------------------------------------------- // 5. 서버 가동 // ----------------------------------------------------------- Console.WriteLine("🚀 OpcPksPlatform 서버 대기 중... (http://0.0.0.0:5000)"); Console.WriteLine("💡 사용자가 '인증서 생성' 버튼을 누를 때까지 대기합니다."); app.Run();