web-dev-qa-db-fra.com

Qu'est-ce qui ne va pas avec le déploiement Web à partir de Visual Studio et du service App?

Le déploiement Web a soudainement échoué.

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

J'ai arrêté le service, mais le déploiement échoue toujours.

Lorsque j'ai essayé de supprimer un fichier de wwwroot dans l'interface utilisateur de Kudu PowerShell, j'obtiens l'erreur "404 file not find", mais ce fichier est toujours affiché après l'actualisation. Lorsque j'ai essayé de supprimer le fichier directement dans PowerShell, j'obtiens une erreur

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

J'ai supprimé le service, je l'ai recréé et le premier déploiement à partir de Visual Studio était OK. Mais le déploiement du lendemain a échoué à nouveau. La seule chose entre ces déploiements était le déploiement à partir de VSTS. Mais j'ai pu déployer à partir de VSTS et de Visual Studio dans n'importe quel ordre avant sans aucun problème.

Je suis le propriétaire de ce service d'application.

Journal de déploiement.

(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.
22
Rambalac

Tout d'un coup, le mode de déploiement par défaut de VSTS est devenu Run-From-Zip.

La solution définit Sélectionnez la méthode de déploiement case à cocher dans le déploiement VSTS et assurez-vous que Web Deploy est sélectionné.

Pour "déverrouiller" le service dont vous avez besoin pour supprimer les paramètres WEBSITE_RUN_FROM_Zip de Paramètres d'application page

Remarque: Le nouveau nom de ces paramètres est WEBSITE_RUN_FROM_PACKAGE

30
Rambalac

J'ai eu le même problème aujourd'hui avec net core 2.2 et la solution consistait à supprimer le paramètre "WEBSITE_RUN_FROM_PACKAGE" dans les applications Azure

18
joakimja

Nous avons été touchés par ce même problème - le système de fichiers devient en lecture seule lorsque WEBSITE_RUN_FROM_PACKAGE=1. Azure App Service semble ajouter automatiquement ce paramètre d'application lors des récentes mises à niveau de la plateforme.

Je suggère d'utiliser Run-From-Package sur le déploiement Web - mais vous pouvez facilement annuler leurs mises à jour forcées en définissant WEBSITE_RUN_FROM_PACKAGE=0. Si vous êtes sur Azure DevOps - la la dernière version d'App Service Deploy v4 prend en charge Run-From-Package .

9

Supprimez les paramètres appp WEBSITE_RUN_FROM_Zip puis réessayez de déployer à partir de VS. Cela a fonctionné pour moi

2
joey

Si vous choisissez vous-même la méthode de déploiement à l'étape de publication, cela ne devrait pas apparaître:

enter image description here

1
rubeonline

Mon déploiement a échoué avec le même message et la même trace de pile, mais a été causé par une affectation de stratégie qui a interdit l'emplacement de ma ressource.

(La ressource avait été créée dans US West, puis une stratégie a été appliquée au niveau racine du locataire qui n'autorisait que US West 2.)

Une fois la stratégie mise à jour, le déploiement a réussi.

0
Joseph Anderson