정상적으로 잘 배포되던 프로젝트인데 어느 날 갑자기 배포하고 나면 502.5에러가 납니다.
로컬은 여전히 잘됩니다.
HTTP Error 502.5 - Process Failure
502 오류는 원래 서버가 잘못된 응답을 받았다는 의미입니다.
하지만 502가 나는 원인은 다양합니다.
해결방법도 엄청 많습니다.
문제는 원인을 모르면 결국 될 때까지 해봐야 한다는 것입니다.
그래서 서버의 이벤트 뷰어(event viewer)를 확인해 봤습니다.
이벤트 뷰어의 내용에서 중요한 건
"failed to start process with commandline 'dotnet"
이것뿐입니다.
'dotnet' 프로세스를 시작하는 것이 실패했다고 합니다.
왜? 도대체 왜?
이 에러는 보통 권한이 없거나 파일이 없어서 나는데......권한도 있고 파일도 있습니다.
혹시나 해서 예전에 백업해둔 백업본을 풀어서 넣어보니 잘됩니다.
권한 문제는 아니라는 것이죠.
이것저것 많은 방법을 테스트했지만 해결되지 않아서 최후의 수단인 프로젝트 재생성을 했습니다.
그런데 이것도 어느 순간부터 502.5에러가 나는 겁니다.
그런데 누겟관련 작업을 하면 발생하는 현상을 발견했습니다.
그래서 프로젝트를 다시 생성하고 한 스탭씩 누겟을 설치/업데이트하고 테스트를 해보았습니다.
그랬더니 'Microsoft.AspNetCore.All'를 업데이트한 순간부터 저 오류가 나기 시작합니다.
잡았다 요놈!
이제 다시 원래 프로젝트로 가서 'Microsoft.AspNetCore.All'의 버전을 '2.0.0'으로 다운그레이드 하고 배포를 하니.......
성공!
관련 내용을 검색해보니 이번 버전에 버그가 있나 보네요.
참고 : github aspnet/IISIntegration Issues - HTTP Error 502.5 - Microsoft.AspNetCore.Antiforgery.dll #476
버그가 수정될때 까지는 업데이트를 하지 말고 사용해야 할 것 같습니다.