feat: 포트 충돌 방지 - 자동 포트 탐색 및 상대 경로 적용

백엔드 변경사항:
- fMain.cs: 포트 7979~8000 범위에서 자동 탐색 및 fallback 기능 추가
- 성공한 포트를 Pub.WebServiceURL에 자동 저장
- 포트 충돌 시 자동으로 다음 포트 시도

프론트엔드 변경사항:
- login.html: 하드코딩 URL 3곳을 상대 경로로 변경
- Common.html: 하드코딩 URL 4곳을 상대 경로로 변경
- DashBoard/index.html: 하드코딩 URL 10곳을 상대 경로로 변경

효과:
- 포트 충돌 시 사용자 개입 없이 자동 해결
- 포트 변경에 무관하게 프론트엔드 자동 동작
- 다양한 환경에서 안정적인 서비스 제공

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
backuppc
2025-11-03 11:02:28 +09:00
parent 3f3a2834df
commit a966b4a6ab
4 changed files with 62 additions and 37 deletions

View File

@@ -121,21 +121,46 @@ namespace Project
UpdateControls();
tmDisplay.Start(); //display timer
// Start OWIN host (실행환경 체크는 이미 완료됨)
try
// Start OWIN host with port fallback mechanism (포트 자동 탐색)
webok = false;
int startPort = 7979;
int maxPort = 8000; // 최대 8000 포트까지 시도
for (int port = startPort; port <= maxPort; port++)
{
var options = new StartOptions(Pub.setting.WebServiceURL);
webApp = WebApp.Start<OWIN.Startup>(options);
Console.WriteLine("start webapp");
FCOMMON.Pub.log.AddI("웹지원 서버 준비 완료");
webok = true;
}
catch (Exception ex)
{
//Util.MsgE("Web Interface Error\r\n" + ex.Message)/;
Console.WriteLine(ex.Message);
FCOMMON.Pub.log.AddE("웹지원오류" + ex.Message);
webok = false;
try
{
var url = $"http://127.0.0.1:{port}";
var options = new StartOptions(url);
webApp = WebApp.Start<OWIN.Startup>(options);
// 성공 시 실제 사용된 포트 저장
Pub.WebServiceURL = url;
Console.WriteLine($"웹서버 시작 성공: {url}");
FCOMMON.Pub.log.AddI($"웹지원 서버 준비 완료 (포트: {port})");
if (port != startPort)
{
FCOMMON.Pub.log.AddAT($"기본 포트({startPort})가 사용 중이어서 포트 {port}를 사용합니다.");
}
webok = true;
break; // 성공하면 루프 종료
}
catch (Exception ex)
{
Console.WriteLine($"포트 {port} 시작 실패: {ex.Message}");
// 마지막 포트까지 실패한 경우에만 에러 로그
if (port == maxPort)
{
FCOMMON.Pub.log.AddE($"웹서버 시작 실패: 포트 {startPort}~{maxPort} 모두 사용 불가");
FCOMMON.Pub.log.AddE("상세 오류: " + ex.Message);
webok = false;
}
// 다음 포트 시도
}
}
// WebView2 초기화 재시도 (필요시)