100 votes

Qu'est-ce qui ne va pas avec le déploiement web depuis Visual Studio et App service ?

Soudain, le déploiement Web a commencé à échouer.

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 PowerShell de Kudu, j'ai obtenu l'erreur "404 file not find", mais ce fichier est toujours affiché après rafraîchissement. Lorsque j'ai essayé de supprimer un fichier directement dans Powershell, j'ai obtenu l'erreur suivante

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 correct. Mais le jour suivant, le déploiement a de nouveau échoué. La seule chose entre ces déploiements était le déploiement à partir de VSTS. Mais j'étais capable de 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'applications.

Journal du 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.

0 votes

Merci de marquer une réponse ci-dessous si cela a résolu votre problème. Cela m'a sauvé :-)

164voto

Rambalac Points 412

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

La solution consiste à mettre Sélectionnez la méthode de déploiement dans VSTS deploy et assurez-vous que Déploiement Web est sélectionné.

Pour "débloquer" le service, vous devez supprimer le paramètre SITE_EXÉCUTION_À_PARTIR_DU_PAQUET de Paramètres de l'application dans le portail Azure - il se trouve sous "Configuration".

enter image description here

0 votes

Cela m'a tué, merci beaucoup d'avoir posté la réponse ! !!

0 votes

Cela ne fonctionne pas pour moi. Je n'ai pas WEBSITE_RUN_FROM_ZIP dans appsetting.json

1 votes

Ce n'est pas dans appsettings, c'est dans Azure App settings.

51voto

joakimja Points 1024

J'ai eu le même problème aujourd'hui avec net core 2.2 et la solution a été de supprimer le paramètre "WEBSITE_RUN_FROM_PACKAGE" dans azure appsettings.

6 votes

WEBSITE_RUN_FROM_PACKAGE est ajouté chaque fois que vous effectuez un déploiement avec un pipeline Azure DevOps. Vous devrez le supprimer avant de publier via VS 2019. Pour le supprimer, faites défiler vers l'extrême droite et cliquez sur l'icône de la corbeille.

24voto

SliverNinja Points 15924

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

Je suggère d'utiliser Run-From-Package plutôt que web deploy - mais vous pouvez facilement annuler les mises à jour forcées en définissant les paramètres suivants WEBSITE_RUN_FROM_PACKAGE=0 . Si vous êtes sur Azure DevOps - la la dernière version de App Service Deploy v4 supporte Run-From-Package .

12voto

Prakash G. R. Points 3193

La raison en est que le AzureWebApp dans Azure DevOps (VSTS) Pipeline, met à jour le paramètre 'WEBSITE_RUN_FROM_PACKAGE' à '1'. Ceci est principalement utilisé par Azure Functions, où nous devons déployer le paquet entier (et donc rendre le wwwroot en lecture seule). Alors que c'est très utile dans Functions, vous verrez des choses bizarres dans une Web App normale (comme App_Offline non trouvé, le dossier wwwroot/lib non trouvé, vous verrez des fichiers plus anciens dans le dossier FTP mais les plus récents dans la console Kudu, etc).

La solution la plus simple est de mettre à jour le paramètre 'deploymentMethod' en 'zipDeploy' dans votre fichier YAML.

3voto

joey Points 1869

Supprimez les paramètres de l'appp WEBSITE_RUN_FROM_ZIP puis réessayez de déployer à partir de VS. Ceci a fonctionné pour moi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X