32 votes

Est-il possible de modifier le web.config d'une application en nuage déployée sur Windows Azure sans redéployer mon application ?

Est-il possible de modifier web.config de mon application en nuage déployée sur Windows Azure sans redéployer mon application ?

Le scénario est le suivant

  1. L'application en nuage est déployée sur Azure avec 3 instances.
  2. web.config a du texte statique dans appsetting qui est affichée sur la page d'accueil (par exemple - 2009 Mon site. Tous droits réservés )
  3. Je souhaite maintenant modifier le texte statique mentionné dans Web.Config de la manière suivante 2009 à 2010 .
  4. Je souhaite maintenant modifier Web.Config sans redéployer mon site.
  5. Je ne souhaite pas --> déployer mon application sur en retard avec une mise à jour Web.Config et le remplacer par production .

Existe-t-il une astuce pour mettre à jour les fichiers du paquet déployé au moment de l'exécution ?

20voto

Nicholas Murray Points 5726

Selon Maxim dans les commentaires ci-dessous, cette réponse est maintenant périmée.

Vous pouvez modifier de manière programmatique les paramètres web.config d'un rôle web dans l'événement OnStart en utilisant la bibliothèque Microsoft.Web.Administration.ServerManager.

*** laissant la réponse originale car elle était correcte à l'époque et comme, je n'ai pas utilisé Azure depuis que j'ai répondu à cette question, je ne suis pas sûr à 100% de la réponse valable.

En un mot, non.

Vous devez utiliser le fichier de configuration du service pour de tels paramètres.

Pour décider s'il faut placer les clés dans les paramètres de configuration des services ou dans les paramètres de configuration Web.

Vous pouvez vous poser les questions suivantes :

Ce paramètre change-t-il à chaque déploiement ? Si c'est le cas, le web Les paramètres de configuration sont l'endroit approprié pour cette information.

Ce paramètre sera-t-il modifié après le déploiement ? Si c'est le cas, le service Les paramètres de configuration sont l'endroit approprié pour cette information.

Le fichier Web.config fait partie du paquet de déploiement et est donc en lecture seule lorsqu'il est déployé sur Azure. Pour mettre à jour les paramètres, vous devrez procéder à un nouveau déploiement.

Alors que le fichier de configuration du service est téléchargé avec, mais pas empaqueté avec, le paquet de déploiement, et donc vous pouvez télécharger ou modifier le fichier sans redéployer votre service.

8voto

mawtex Points 1189

Il es possible et si vous apportez des modifications à web.config, l'application ASP.NET redémarrera avec les nouveaux paramètres, comme vous pouvez vous y attendre avec un "ASP.NET normal". Vous devez simplement vous assurer que vous effectuez les bonnes mises à jour de web.config, sinon votre instance sera probablement impossible à réparer une fois qu'ASP.NET aura disparu à cause d'une erreur web.config.

Si le fichier web.config fait partie de votre paquetage de déploiement, vous devez modifier les autorisations du fichier, ce que vous pouvez faire à partir de RoleEntryPoint.OnStart().

Une autre solution serait de faire en sorte que votre application ASP.NET écrive elle-même le web.config initial via un gestionnaire web init.

Par défaut, l'application ASP.NET n'aura pas les droits de mise à jour ou de suppression des fichiers du paquet de déploiement ou des fichiers écrits par votre code RoleEntryPoint, alors qu'elle a un accès complet aux fichiers qu'elle a elle-même créés. Ce comportement n'est observé que sur le "vrai Azure", alors que les choses se comportent autrement lors d'une exécution locale avec le SDK.

Consultez ce document pour obtenir des informations sur l'écriture de fichiers et la définition des autorisations sur les fichiers à partir de RoleEntryPoint.OnStart() : Comment puis-je obtenir le chemin de la racine du site WebRole à partir de RoleEntryPoint.OnStart() ?

1voto

Oui, cela peut être fait. Les étapes sont les suivantes :

  1. Utilisez la variable d'environnement 'RdRoleRoot' pour trouver la racine du rôle.
  2. Recherchez le fichier 'RoleModel.xml'.
  3. Chargez le fichier 'RoleModel.xml' et trouvez l'entrée pour votre site sous le nœud "Sites".
  4. Dans cette entrée, recherchez l'attribut 'physicalDirectory' qui est le chemin relatif vers le répertoire contenant votre fichier web.config
  5. Combinez le chemin du rôle Root avec le chemin du physicalDirectory pour obtenir le chemin complet.

J'ai écrit un article de blog http://anuchandy.blogspot.com/2014/02/changing-webconfig-file-deployed-on.html avec un exemple de code.

0voto

Ramakrishna Points 20

Oui, vous pouvez, tout ce que vous avez à faire est de créer un RDC pour Azure et d'entrer dans le système. E:\siteroot\0 où vous verrez tous vos fichiers déployés. et modifiez simplement web.config Cela fonctionnera à la fois pour la production et la mise en scène sans avoir besoin de redéployer, de réimager ou de redémarrer.

Peut-être que ce post Thread a été demandé il y a longtemps, mais pour quelqu'un comme moi, c'est définitivement utile :-)

0voto

Andrew Points 4523

13 juillet 2018

Le portail Azure dispose d'un Éditeur de services d'applications (en aperçu) sous votre App Service déployé. En sélectionnant cette option, vous obtiendrez un éditeur de type Visual Studio Code pointé sur votre site Web Azure déployé, permettant de modifier les éléments suivants web.config (ou tout autre fichier) facilement :

Azure App Service Editor screenshot

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