.Net 6 에서 ASP.Net core 프로젝트를 빌드해서 Windows Service에 등록 한 다음 서비스를 시작했는데 에러가 발생했다면
우선 Event Log Viewer 에서 Exception 메세지를 먼저 확인 합니다.
Windows Logs -> Application 에서 .Net Runtime Error 내용을 들여다 보면 Exception이 발생한 코드의 위치가 나오는데,
해당 코드가 appsettings.json에서 읽어온 configuration을 access하는 코드라면 아래 옵션을 추가해서 간단히 해결 가능합니다.
var builder = WebApplication.CreateBuilder(new WebApplicationOptions
{
Args = args,
ContentRootPath = WindowsServiceHelpers.IsWindowsService() ? AppContext.BaseDirectory : default,
});
무슨 이유인지는 모르겠지만 Windows Service로 application을 구동 할 경우 ContentRootPath가 다른곳으로 설정되는 듯 합니다. 위와 같이 CreateBuilder 호출 시 옵션으로 ContentRootPath를 지정해주면 정상적으로 작동합니다.