2019. 12. 12. 15:30

가상디렉토리에 프로젝트를 만들어서 올렸더니 

HTTP Error 500.0 - ANCM In-Process Handler Load Failure




1. 오류 상황

이게 무조건 발생하는 것은 아니고 닷넷 코어 2.2이상을 사용 시 가상디랙토리 사용 시 특정 상황에서 발생합니다.


'InProcess'는 IIS 응용프로그램 풀에서 동작합니다.

(참고 : Rick Strahl님 블로그 - ASP.NET Core In Process Hosting on IIS with ASP.NET Core )

'InProcess'를 사용하고 있을때 'dotnet.exe'에서 사용하려고 하면 발생한다고 합니다.


일반적인 상황에서는 'InProcess'를 권장한다고 합니다.



2. 해결 방법

간한 하게 'web.config'에서 'hostingModel'를 수정해줍니다.

(참고 : Microsoft Docs - ASP.NET Core 모듈 )


hostingModel="OutOfProcess"




이렇게 수정하고 해당 응용프로그램 풀을 재시작해 줍니다.



3. 프로젝트에서 수정하기
프로젝트에서는 

프로젝트 속성 > 디버그 > 호스팅 모델

을 바꿔주면 됩니다.




근데 버전에 따라 옵션이 안 먹기도 하더라고요;;;;

그럴 때는 프로젝트 파일을 수정해야 합니다.


프로젝트 파일을 열어줍니다.




아래 코드를 참고하여 파일을 수정해줍니다.


1
2
3
4
<PropertyGroup>
  <TargetFramework>netcoreapp2.2</TargetFramework>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>
cs



4. 추가 오류

옵션을 변경했는데 다른 오류가 나는 경우가 있습니다.


HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure




이건 웹컨피그 자체를 다시 생성해야 합니다.

상황에 따라서 프로젝트에서 개시하여 생성된 웹컨피그를 사용해야 할 수 있습니다.



마무리

닷넷 코어 2.2부터 생긴 기능이라 그전에는 나지 않던 오류입니다.

가상디랙토리도 막 많이 쓰진 않기 때문에 자주 볼 수 있는 오류는 아닐 듯 하네요 ㅎㅎㅎ