7
votes

Accès refusé sur wwwroot après le déploiement de DevOps

J'ai déployé une application Web .Net Core sur Azure App Service à l'aide d'Azure DevOps. Maintenant, quand j'essaie de créer un fichier dans 'D: \ home \ site \ wwwroot' en utilisant Kudu, il dit:

409 Conflit: impossible d'écrire dans la ressource locale 'D: \ home \ site \ wwwroot \ anc'> en raison de l'erreur 'Impossible de trouver le fichier' D: \ home \ site \ wwwroot \ anc '.'. p>

J'ai remarqué que les persmissions sur le répertoire 'D: \ home \ site \ wwwroot' sont différentes de celles d'une application Web similaire que j'ai déployée à l'aide du profil de publication

Get- Résultat Acl sur l'application problématique:

PS D:\home\site\wwwroot> Get-Acl "D:\home\site\wwwroot"
Get-Acl "D:\home\site\wwwroot"




    Directory: D:\home\site





Path    Owner                  Access                                          

----    -----                  ------                                          

wwwroot BUILTIN\Administrators Everyone Allow  DeleteSubdirectoriesAndFiles,...


Résultat Get-Acl sur une autre application similaire:

PS D:\home\site\wwwroot> Get-Acl "D:\home\site\wwwroot"
Get-Acl "D:\home\site\wwwroot"




    Directory: D:\home\site





Path    Owner                   Access                                         

----    -----                   ------                                         

wwwroot IIS APPPOOL\luncher-dev NT AUTHORITY\SYSTEM Allow  FullControl...      


Pipeline de version correspondant de Azure DevOps

Dev Ops Pipeline

Comment puis-je créer le répertoire wwwroot inscriptible?


0 commentaires

4 Réponses :


1
votes

N'écrivez pas

n'importe quel fichier sur wwwroot lorsque vous êtes dans le cloud. Parce qu'Azure peut changer votre machine / serveur et qu'il ne fera que déplacer vos fichiers g de publication. Pas les fichiers que vous avez ajoutés après la publication. Vous les perdrez donc.


2 commentaires

Merci pour la réponse. Et veuillez donner un exemple, pour votre réponse.


Merci pour les conseils, mais il ne s'agit pas seulement de créer de nouveaux fichiers, mais aussi de supprimer des fichiers existants



3
votes

Lorsque vous déployez en tant que zip, vous ne pouvez pas modifier le système de fichiers.

Citation ci-dessous de https://tomasherceg.com/blog/post/azure-app-service-cannot-create-directories-and-write-to-filesystem-when-deployed-using-azure- devops

Je ne connaissais pas du tout cette fonctionnalité, et de plus, le paramètre est masqué dans la tâche VSTS, donc je ne l'ai pas remarqué. Vous devez développer la section Options de déploiement supplémentaires et cliquer sur la case à cocher Sélectionner la méthode de déploiement, qui n'est pas cochée par défaut. Ce n'est qu'après ces deux clics que vous pouvez voir le menu déroulant avec les méthodes de déploiement - ZipDeploy est celui par défaut.

J'avais besoin de le changer pour utiliser WebDeploy afin que les fichiers d'application soient stockés comme des fichiers normaux et que l'application puisse écrire dans le système de fichiers comme elle le pouvait auparavant.


0 commentaires

2
votes

J'ai eu le même problème et il m'a fallu une éternité pour le résoudre.

voir le lien: https: //theazureissues.blogspot.com/2019/04/409-conflict-could-not-write-to-local.html

Le paramètre d'application "WEBSITE_RUN_FROM_PACKAGE = 1" de l'application Le service rend le dossier wwwroot de l'application en lecture seule.

Je viens de le définir sur 0, j'ai redémarré mon application et tout est revenu à la normale.

J'ai trouvé un autre lien: https: //azureappservices.blogspot.com/2018/06/unable-to-editdelete-files-through-kudu.html qui traite des attributs de fichiers spécifiques, cependant, je n'ai même pas été en mesure de modifier les attributs après le déploiement à partir de devops. Je pense donc qu'il s'agit d'un correctif pour des fichiers spécifiques marqués en lecture seule.

OU

vérifiez ce lien: https://tomasherceg.com/blog/post/azure-app-service-cannot-create-directories-and-write-to-filesystem-when-deployed-using-azure -devops ça pourrait aussi être le

WEBSITE_RUN_FROM_ZIP

réglage des applications. (Ce n'était pas le problème dans mon cas)


0 commentaires

11
votes

Modifier cette CLÉ DE RÉGLAGE DE L'APPLICATION

WEBSITE_RUN_FROM_PACKAGE = 1 to 0

Ce paramètre fait de wwwroot un système de fichiers en lecture seule.

Avec Run From Package, ceci est strictement appliqué comme wwwroot le dossier devient en lecture seule


4 commentaires

@ Tech-gayan, où trouver la CLÉ DE RÉGLAGE DE L'APPLICATION? Je ne parviens pas à trouver le WEBSITE_RUN_FROM_PACKAGE où il se trouve, pouvez-vous s'il vous plaît aider à le trouver dans l'outil Azure DevOps?


@MdAslam C'est un paramètre d'application. vous pouvez le trouver dans la section de configuration de votre service d'application approprié dans Azure.


Merci beaucoup. J'ai fait une recherche dans l'outil Azure DevOps.


Lorsque je change 1 à 0 et enregistre le paramètre, mon site Web ne fonctionne pas et donne une erreur 500.37 comme ça? n'importe quelle raison?