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부터 생긴 기능이라 그전에는 나지 않던 오류입니다.

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

  1. 곰곰이 2020.02.06 13:34  Address  Edit/Delete  Reply

    우회 하는 방법이 있나보네요.

    https://docs.microsoft.com/ko-kr/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.1

    가상 디렉터리
    IIS 가상 디렉터리는 ASP.NET Core 앱에서 지원되지 않습니다. 앱은 하위 애플리케이션으로 호스팅될 수 있습니다.

    하위 애플리케이션
    ASP.NET Core 앱은 IIS 하위 애플리케이션(하위 앱)으로 호스팅될 수 있습니다. 하위 앱의 경로는 루트 앱 URL의 일부가 됩니다.

    • Favicon of https://blog.danggun.net BlogIcon 당근천국 2020.02.06 16:42 신고  Address  Edit/Delete

      이거 가상디랙토리로 만들지말고 응용프로그램으로 만들라는 소리입니다.

      저도 요즘은 귀찮아서 그냥 응용프로그램으로 생성해서 쓰고 있었는데 이제는 권고사항이 됐네보네요.

      내용에 추가하도록 하겠습니다.

댓글 작성

이름
패스워드
홈페이지
비밀글