Quels sont les inconvénients possibles d'un site IIS 7 ayant une jonction NTFS comme racine Web?

13

J'essaie de trouver un moyen de déployer le code ASP.NET avec le moins de perturbation possible du site. Une idée était de mettre en place le site à desservir à partir d'une jonction NTFS c:\www\example.com

c:\www\example.com -> c:\www\example.com_r1234

Ensuite, lorsque le nouveau code est déployé, il est copié c:\www\site.com_r1235et la jonction reciblée vers

c:\www\example.com -> c:\www\example.com_r1235

Donc, ma question est quel effet cela pourrait avoir sur les demandes actuelles dans IIS? Quels autres inconvénients cela pourrait-il avoir du point de vue de la réaction d'IIS au changement (le cas échéant)? Est-ce que cela sera aussi transparent pour l'utilisateur final du site que j'espère?

(J'ai envisagé de modifier la racine Web du site via la ligne de commande, mais je n'aime vraiment pas l'idée de reconfigurer IIS en raison de tout domaine d'application ou désabonnement de pool d'applications qui pourrait se produire, mais je ne sais pas grand-chose sur que se passe-t-il lorsque le chemin physique configuré d'un site est modifié en cours de chargement)

Pour être clair, ma seule préoccupation ici est l'expérience de mes utilisateurs finaux. Mon objectif est d'éviter les dérangements pour eux, pas la commodité pour moi.

Jayrdub
la source
1
Réinitialisez la racine Web. Tout recyclage (ne pense pas ) et les redémarrages du pool d'applications sont alors a) probablement "inutiles" et b) aident le processus de travail à maintenir une idée réaliste de l'état de son contenu et de ses caches. C'est une solution intelligente, bien sûr, mais intelligent signifie rarement stable. Découvrez ce que fait la majorité des gens, puis faites-le.
TristanK
C'est une excellente question, je cherche une réponse depuis longtemps. Tout ce que j'ai jamais vu est soit un déploiement continu sous un équilibreur de charge (que je n'ai pas) ou une simple copie / svn de fichiers dans le webroot (que je n'aime pas).
jayrdub
1
Essayez donc de recibler la racine Web en premier.
TristanK

Réponses:

3

un moyen de déployer le code ASP.NET avec le moins de perturbation possible du site.

Il semble que cet objectif et votre solution proposée ne soient pas alignés, car vous avez maintenant un tas de travail supplémentaire ou de scripts impliqués pour chaque déploiement.

Une chose que j'ai vue est d'installer un client svn sur le serveur de production, et le site de production est une copie extraite d'un emplacement / d'une branche spécifique sur l'arborescence de contrôle de source. De cette façon au moins, vous n'avez qu'à mettre à jour les fichiers modifiés pour les nouveaux déploiements.

Joel Coel
la source
Cette opération de réseau entraînerait les artefacts du site dans un état d'ambiguïté beaucoup trop longtemps. C'est la situation exacte que j'essaie d'éviter. J'essaie d'éliminer le temps où les assemblys sous la racine Web sont de versions différentes.
jayrdub
1
Le "travail supplémentaire et les scripts impliqués" ne sont pas un problème, nous sommes entièrement automatisés
jayrdub
Je suppose que pour être juste, les perturbations et le travail requis ne sont pas vraiment la même chose
Mark Henderson
La perturbation de l'utilisateur final de mon site est ce à quoi je fais référence
jayrdub
2

J'ai créé un dossier derrière ma racine Web appelé _images

C:\DEV\_IMAGES

puis copié un tas de fichiers gif en elle. J'ai ensuite créé un lien symbolique NTFS sur ma racine en utilisant

C:\DEV\PROJECT\ROOT mklink /D webimages ..\_images

Dans Visual studio 2010, je "Afficher tous les fichiers" puis actualiser ... et inclure les nouvelles "webimages" dans mon projet. Je peux maintenant signaler ...

img src='webimages/icon.gif'

Lorsque j'exécute l'application, elle fonctionne également très bien sur ma machine locale.

Je ne sais pas si cela fonctionne sur le vrai serveur (IIS 7) jusqu'à ce que l'infrastructure ait une idée, est-ce que quelqu'un sait pourquoi cela ne fonctionnerait pas en production?

Je pense que tant que les droits sont là, il devrait, et si c'est le cas, quel excellent moyen de simplifier le partage de dossiers (de tous types) entre les applications Web.

Je n'ai pas encore essayé d'exprimer cela dans TFS, donc si quelqu'un a des commentaires à ce sujet, faites-le nous savoir!

Greg
la source
0

Cela ne fonctionnera pas car IIS peut penser que le fichier web.config a été modifié par un autre programme. IIS lèvera probablement une exception System.Configuration.ConfigurationErrorsException. Je suggérerais d'écrire une sorte de script pour simplement changer le répertoire personnel du site.

Cory
la source