Azure 앱 서비스를 64비트로 변경하는 방법
64비트 ASP에 요청하는 데 문제가 있었습니다.Azure App 서비스에서 실행 중인 NET Core API.반환되는 오류는 다음과 같습니다.
처리되지 않은 예외:시스템.잘못된 이미지 형식 예외:파일 또는 어셈블리 '***.dll'을(를) 로드할 수 없습니다.잘못된 형식의 프로그램을 로드하려고 했습니다.
저는 이것이 앱의 플랫폼(64비트)과 앱이 실행되는 환경의 플랫폼 사이에 불일치가 있다는 것을 의미한다는 것을 이해합니다.앱 서비스가 64비트로 실행되도록 변경하는 방법을 알 수 없습니다.
Azure 포털의 Application Settings에서 Platform을 64비트로 설정했습니다.
그러나 Kudu에 체크인하면 런타임 환경이 win8-x86에서 작동 중임을 나타냅니다.
project.json
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true,
"platform": "x64"
},
"runtimes": {
"win10-x64": {}
}
몇 가지 질문
- 앱 서비스가 64비트 플랫폼에서 실행되도록 변경하려면 어떻게 해야 합니까?
- RID가 중요한가요?
win8...
내 런타임 구성이 다음과 같을 때project.json
지정합니다.win10...
아마도 x86과 x64가 중요하지만, win8과 win10도 같은 버전의 윈도우여야 합니까?
이제 Azure App Service에서 사용할 수 있습니다.
배포 단계:
- 포털에서 플랫폼을 64비트로 설정
- csproj에 다음을 포함하여 프로젝트 대상이 64비트인지 확인합니다.
<PropertyGroup>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
- 응용 프로그램을 게시할 때 대상 프레임워크가 win-x64로 설정되어 있는지 확인합니다. (실행 중인 경우)
dotnet publish
그냥 추가-r win-x64
)
설명서는 여기에 있지만 (현재) 약간 희박한 것으로 인정됩니다.
이 Github 문제 대응은 프레임워크에 의존하는 배포를 수행하고 "그냥 작동"할 수 있어야 한다는 것을 시사합니다.YMMV 하지만 그것은 내 자신의 경험이 아니었기 때문에 위의 런타임 플래그 제안.
TLDR; 64비트.를 사용하는 NET 핵심 프로세스.NET 코어 런타임(와 반대).NET Framework 런타임)은 아직 Azure에서 지원되지 않지만 향후 출시될 예정입니다.
다음은 Microsoft Azure 지원팀과 논의한 내용입니다.
Azure 포털의 64비트/32비트 구성(위의 스크린샷에 표시됨)은 IIS w3wp.exe 프로세스를 제어합니다.w3wp.exe 프로세스는 요청을 NET 코어 프로세스로 전달합니다.이 구성은 의 비트를 제어하지 않습니다.NET 코어 프로세스.조금 헷갈리긴 하지만 위 스크린샷에서 플랫폼 옵션을 변경해도 아무런 영향이 없었던 이유를 설명합니다.
앱 서비스 닷넷의 PATH 환경변수 설정을 기반으로 합니다.exe는 32비트 "D: \Program Files (x86)\dotnet\dotnet.exe"에 매핑됩니다.의 64비트 런타임.NET core는 앱 서비스에 사전 설치되어 있지 않아 현재 사용할 수 없습니다.
Microsoft는 에 64비트 지원을 추가할 계획입니다.에서 실행되는 NET 코어 애플리케이션Azure의 NET 코어 런타임이지만 의 향후 업데이트에 따라 다릅니다.NET 핵심 툴 체인.그들은 나에게 내부 날짜를 알려주었지만 나는 그것을 공개적으로 공유하지 않겠다고 약속했습니다.
그들이 제게 준 해결책은 ASP를 사용하는 것이었습니다.ASP가 아닌 NET 코어(.net 프레임워크 사용) 비주얼 스튜디오 템플릿.NET 코어(.net 코어 사용) 1개.그것은 64비트를 로딩합니다.ASP의 Netframework 런타임입니다.넷코어 웹 애플리케이션.이를 위해서는 약간의 마이그레이션 작업이 필요하며 일부 프로젝트에서는 불가능할 수도 있습니다.
다행히 32비트 버전의 종속성으로 전환할 수 있었습니다. 이는 앱이 Azure 환경에서 작동한다는 것을 의미합니다.슬프게도 이것은 이 선택권이 없는 사람들에게는 큰 의미가 없을 것이고, 저는 많은 사람들이 있다고 확신합니다.
64비트 런타임이 필요한 경우 4가지 방법이 있습니다.
- 자체 포함 애플리케이션 배포
- 고유한 런타임 배포
- Linux Azure 앱 서비스 사용
- 컨테이너용 웹 앱 사용
자세한 방법은 아래 링크를 참조하십시오. https://blogs.msdn.microsoft.com/webdev/2018/01/09/64-bit-asp-net-core-on-azure-app-service/
크레딧: 글렌 콘드론
dotnet publish 명령은 IIS에서 dotnet 프로세스를 시작하는 데 사용하는 web.config 파일을 생성합니다.Kudu의 PATH 환경 변수 닷넷.exe는 D:\Program Files(x86)\dotnet
솔루션은 빌드 후 이 파일에서 교체하는 것입니다.
<aspNetCore processPath="dotnet" arguments=...
포함:
<aspNetCore processPath="%ProgramFiles%\dotnet\dotnet" arguments=...
언급URL : https://stackoverflow.com/questions/42726350/how-to-change-azure-app-service-to-64-bit
'code' 카테고리의 다른 글
초기화 문자열의 형식이 인덱스 0에서 시작하는 규격과 맞지 않습니다. (0) | 2023.05.03 |
---|---|
Python 3은 값을 기준으로 딕트를 정렬합니다. (0) | 2023.05.03 |
Xcode 4 - 콘솔/로그 창 분리 (0) | 2023.05.03 |
SQL Server에서 결과를 페이지로 이동하는 가장 좋은 방법은 무엇입니까? (0) | 2023.05.03 |
Mongoose 채우기 대 개체 중첩 (0) | 2023.05.03 |