[ASP.Net] ASP.Net 6 Windows Service에 등록 후 실행하면 appsettings.json 파일을 못찾을 경우

.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를 지정해주면 정상적으로 작동합니다.