Nous avons rencontré un problème sur IIS 7.5 où nous avons un système de déploiement simple qui se compose des éléments suivants:
Créez un fichier zip de nouveau webroot, composé de trois dossiers:
Api
Site
Manager
Celui-ci est décompressé dans un nouveau dossier (disons que nous l'appelons "SITE_REV1") et contient un script qui invoque ce qui suit (un pour chaque racine Web):
C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site"
Cela fonctionne généralement, en 9/10 fois. Dans certains cas, la racine Web semble être mise à jour correctement (si j'inspecte les paramètres de base dans le Gestionnaire des services Internet, le chemin semble correct), mais le site en cours d'exécution est en fait pointé vers l'ancien emplacement. La seule façon dont nous avons réussi à "résoudre ce problème" consiste à exécuter une réinitialisation IIS. Il ne suffit pas de recycler le pool d'applications en question.
Parfois, il semble même nécessaire de faire un redémarrage, mais je ne suis pas sûr à 100% que c'est exact (ce n'est pas toujours moi qui résolvais le problème).
J'ai réécrit le script à l'aide de Powershell et du module d'administration Web, en espérant qu'il y avait un problème dans appcmd, mais le même problème se produit.
Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site"
Quelqu'un a-t-il vécu quelque chose comme ça? Quelqu'un a-t-il une idée de ce qui se passe et de ce que je peux essayer de faire pour éviter ce problème? Faire une réinitialisation IIS n'est pas vraiment une bonne option pour nous, car cela affecterait tous les sites sur le serveur chaque fois que nous essayons de déployer des modifications sur un seul site.
EDIT: Nous avons identifié qu'un démarrage / arrêt du site (PAS le pool d'applications) dans IIS Manager résout le chemin physique erroné, mais si j'arrête le site en utilisant appcmd, change le chemin physique, puis le démarre, je souffre toujours de les mêmes problèmes. Je suis à blanc ...
Réponses:
La modification du chemin physique à partir du Gestionnaire des services Internet fonctionne-t-elle correctement et immédiatement?
Vous voudrez peut-être essayer la commande suivante. Sinon, la syntaxe devrait avoir le même résultat mais peut-être que cela fonctionne légèrement différemment en interne, ce qui amène IIS à prendre en compte les modifications (mieux):
C:\Windows\System32\inetsrv\appcmd.exe set app "www.site.com/" -[path='/'].physicalPath:"SITE_REV1\Site"
la source
Un recyclage du pool d'applications doit être suffisant par site. Ce sont des processus indépendants. Trop souvent, les articles et les processus encouragent l'utilisation d'iisreset. L'arrêt / le démarrage du pool d'applications pour un site est-il une option? S'agit-il d'une solution à serveur unique et essayez-vous de minimiser les temps d'arrêt du site? Il existe une option pour désactiver le recyclage lors des modifications de configuration. Ensuite, vous pouvez recycler manuellement. Lorsque le problème se produit, qu'est-ce qui est répertorié dans l'applicationHost.config?
la source