source

Visual Studio 및 App 서비스에서 웹 배포에 문제가 있는 것은 무엇입니까?

lovecheck 2023. 5. 2. 22:47
반응형

Visual Studio 및 App 서비스에서 웹 배포에 문제가 있는 것은 무엇입니까?

갑자기 웹 배포가 실패하기 시작했습니다.

Could not find file 'D:\home\site\wwwroot\App_Offline.htm'.

서비스를 중지했지만 배포가 여전히 실패합니다.

Kudu PowerShell UI에서 wwwroot에서 파일을 삭제하려고 하면 "404 file not find" 오류가 발생하지만 새로 고침 후에도 해당 파일이 계속 표시됩니다.powershell에서 파일을 직접 삭제하려고 하면 오류가 발생합니다.

Cannot remove item D:\home\site\wwwroot\Azure.Storage.dll: Invalid access to memory location.
At line:1 char:1
+ del .\Azure.Storage.dll
+ ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (D:\home\site\wwwroot\Azure.Storage. 
   dll:FileInfo) [Remove-Item], IOException
    + FullyQualifiedErrorId : RemoveFileSystemItemIOError,Microsoft.PowerShell 
   .Commands.RemoveItemCommand

서비스를 삭제하고 다시 생성했으며 Visual Studio에서 처음 배포한 것은 OK였습니다.그러나 다음날 배포가 다시 실패했습니다.이러한 구축 간의 유일한 이점은 VSTS에서 구축한 것입니다.그러나 이전에는 VSTS와 Visual Studio에서 어떤 순서로든 문제 없이 배포할 수 있었습니다.

저는 해당 앱 서비스의 소유자입니다.

배포 로그.

(2018-08-06 13:05:03) An error occurred when the request was processed on the remote computer.
Could not find file 'D:\home\site\wwwroot\App_Offline.htm'.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync)
   at System.Xml.XmlWriterSettings.CreateWriter(String outputFileName)
   at System.Xml.XmlWriter.Create(String outputFileName, XmlWriterSettings settings)
   at Microsoft.Web.Deployment.AppOfflineRuleHandler.AddAppOfflineFilesToEachApp(DeploymentBaseContext baseContext, Boolean whatIf)
   at Microsoft.Web.Deployment.AppOfflineRuleHandler.AddChild(DeploymentSyncContext syncContext, DeploymentObject destinationParentObject, DeploymentObject& sourceObject, Boolean& proceed)
   at Microsoft.Web.Deployment.DeploymentSyncContext.HandleAddChild(DeploymentObject destParent, DeploymentObject sourceObject, Int32 position)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncDirPathChildren(DeploymentObject destRoot, DeploymentObject sourceRoot)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildren(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenNoOrder(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildren(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenNoOrder(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildren(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildren(DeploymentObject dest, DeploymentObject source)
   at Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject)
   at Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable`1 syncPassId, String syncSessionId)
   at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable`1 passId, String user, String siteName)
Publish failed to deploy.

갑자기 VSTS 기본 배포 모드가 Run-From-Zip이 되었습니다.

해결 방법은 VSTS 배포에서 배포 방법 선택 확인란설정하고 Web Deploy가 선택되어 있는지 확인하는 것입니다.

서비스를 "잠금 해제"하려면 Azure Portal의 Application settings 페이지에서 WEBITE_RUN_FROM_PACKage 설정을 삭제해야 합니다. 이 설정은 '구성' 아래에 있습니다.

여기에 이미지 설명 입력

오늘 netcore 2.2에서도 동일한 문제가 발생했으며 해결책은 zure app 설정에서 "WEBsite_RUN_FROM_PACKage" 설정을 제거하는 것이었습니다.

문제에 . 은 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""만 읽습니다. 파일 시스템은 다음과 같은 경우에만 읽힙니다.WEBSITE_RUN_FROM_PACKAGE=1Azure App Service는 최근 플랫폼 업그레이드 중에 이 앱 설정을 자동으로 추가하는 것 같습니다.

를 사용하는 것이 . Run-From-Package를 설정하면 수 . 그러나 설정을 통해 강제 업데이트를 쉽게 되돌릴 수 있습니다.WEBSITE_RUN_FROM_PACKAGE=0Azure DevOps - 최신 버전의 App Service Deploy v4는 Run-From-Package를 지원합니다.

구성 -> zero 포털의 응용 프로그램 설정으로 이동하여 'WEBSite_RUN_FROM_PACKage' 값을 '1'에서 '0'으로 변경합니다.그리고 나서 다시 출판합니다.

이것으로 저의 문제가 해결되었습니다.

VSTS(Azure DevOps) 파이프라인의 Azure WebApp 작업이 'WEB사이트_RUN_FROM_PACKage'를 '1'로 업데이트하기 때문입니다.이는 주로 전체 패키지를 배포해야 하는 Azure Functions에서 사용되며, 여기서 wwwroot를 읽기 전용으로 만듭니다.함수에서 매우 유용하지만 일반 웹 앱에서 이상한 것을 볼 수 있습니다(예: App_Offline을 찾을 수 없음, wwwroot/lib 폴더를 찾을 수 없음, FTP 폴더에는 오래된 파일이 있지만 Kudu 콘솔에는 최신 파일이 있음).

가장 간단한 해결 방법은 YAML 파일에서 'deploymentMethod' 설정을 'zipDeploy'로 업데이트하는 것입니다.

appp 설정 WEBITE_RUN_FROM_ZIP을 삭제한 후 VS에서 배포를 다시 시도합니다.이것은 나에게 효과가 있었습니다.

릴리스 단계에서 직접 배포 방법을 선택한 경우에는 다음과 같이 표시되지 않습니다.

여기에 이미지 설명 입력

zure 포털에서 설정을 찾을 수 없는 분들은 아래 단계를 참고하시기 바랍니다.

  1. 포털에 로그인
  2. 앱으로 이동
  3. 검색 구성

여기에 이미지 설명 입력

이름은 'WEB사이트_RUN_FROM_PACKage'입니다.

동일한 메시지 및 스택 추적으로 인해 배포에 실패했지만 리소스에 대한 위치를 허용하지 않는 정책 할당으로 인해 발생했습니다.

리소스가 US West에서 생성된 후 테넌트 루트 수준에서 US West 2만 허용하는 정책이 적용되었습니다.

정책이 업데이트된 후 배포가 성공했습니다.

유사한 오류가 발생했지만 저는 다음과 같습니다.

Access to the path 'C:\home\site\wwwroot\App_Offline.htm' is denied

게시를 시도할 때 이 메시지가 표시됨.NET 5어플.올바르게 설정하여 고정.NET내 앱 서비스의 일반 설정 버전:

여기에 이미지 설명 입력

이 오류는 VS에서 스웨거 xml 파일을 찾는 데 문제가 있을 때 발생할 수 있습니다.프로젝트 > 속성 > 빌드를 마우스 오른쪽 단추로 클릭하면 올바른 페이지로 이동합니다.

"XML 문서 파일:" 상자를 선택합니다.이렇게 하면 문제가 해결되었지만 릴리스 또는 디버그 폴더가 경로에 포함되어 있는지 확인해야 할 수도 있습니다(예: bin\Release\).ProjectName.xml 또는 유사 항목

언급URL : https://stackoverflow.com/questions/51700538/what-is-going-wrong-with-web-deployment-from-visual-studio-and-app-service

반응형