HTTP Error 500.31 - ANCM Failed to Find Native Dependencies
아래와 같은 오류가 발생한다면?
HTTP Error 500.31 - ANCM Failed to Find Native Dependencies
Common solutions to this issue:
The specified version of Microsoft.NetCore.App or Microsoft.AspNetCore.App was not found.
Troubleshooting steps:
• Check the system event log for error messages
• Enable logging the application process' stdout messages
• Attach a debugger to the application process and inspect
For more information visit: https://go.microsoft.com/fwlink/?LinkID=2028526
이벤트 로그를 살펴봐야 합니다. 제 경우에 다음과 같은 오류가 있는데요,
Could not find 'aspnetcorev2_inprocess.dll'. Exception message:
It was not possible to find any compatible framework version
The framework 'Microsoft.NETCore.App', version '3.1.22' was not found.
- The following frameworks were found:
3.1.0 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
You can resolve the problem by installing the specified framework and/or SDK.
The specified framework can be found at:
- https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=3.1.22&arch=x64&rid=win10-x64
그러니까, 배포한 응용 프로그램은 3.1.22 기반으로 빌드한 것인데, 대상 컴퓨터에는 .NET Core 3.1.0 버전이 설치된 경우입니다. 아쉽게도 이럴 때는
rollForward 설정을 해도,
{
"runtimeOptions": {
"tfm": "netcoreapp3.1",
"rollForward": "Major",
"framework": {
"name": "Microsoft.AspNetCore.App",
"version": "3.1.0"
},
"configProperties": {
"System.GC.Server": true,
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}
해결할 수 없습니다. 왜냐하면, rollForward는 높은 버전의 프레임워크에서 낮은 버전의 응용 프로그램을 실행하는 하위 호환성을 위한 것이지, 그 반대인 상위 호환성을 목표로 하는 옵션은 아니기 때문입니다. 따라서 이런 경우에는 3가지 방법 중의 하나를 선택해야 합니다.
- 해당 응용 프로그램을 "Framework-dependent"가 아닌 "Self-contained"로 배포
- 해당 응용 프로그램을 대상 컴퓨터의 버전에 맞게 3.1.0으로 낮춰서 제작
- 대상 컴퓨터에 3.1.22 이상의 .NET Core 런타임을 설치
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]