2009-12-22 3 views
10

j'ai un projet ASP.NET qui a les répertoires suivants

\ annonces
\ les photos
répertoires virtuels Utilisation IIS dans des projets d'application Web Visual Studio

ces deux dossiers ont des milliers de fichiers en eux qui sont mis à jour fréquemment. J'ai actuellement mon IIS mis en place comme

\ inetpub \ wwwroot \ foo
\ inetpub \ wwwroot \ foo \
annonces \ inetpub \ wwwroot \ foo \ les photos
\ inetpub \ wwwroot \ foo.staging
\ inetpub \ wwwroot \ foo.staging \
annonces \ inetpub \ wwwroot \ \ foo.staging les photos

Je considère transformer cela en

\ en etpub \ wwwroot \ foo
\ inetpub \ wwwroot \ foo \ ads
\ inetpub \ wwwroot \ foo \ Photos
\ inetpub \ wwwroot \ foo.staging
\ inetpub \ wwwroot \ \ foo.staging annonces
\ inetpub \ wwwroot \ foo.staging \ les photos
\ inetpub \ wwwroot \ \ foo.resources annonces
\ inetpub \ wwwroot \ \ foo.resources les photos

et en tournant les sous-répertoires foo et foo.staging dans des répertoires virtuels pointant vers le sous-répertoire foo.resources ries. De cette façon, pendant que je fais des tests de mise en scène, je n'ai pas besoin de copier tous les fichiers dans les publicités et les photos chaque fois que je les déploie et je m'inquiète que les choses ne soient pas synchronisées. Est-ce une mauvaise idée? Je suis en train de développer dans Visual Studio 2008 - Existe-t-il un moyen de faire en sorte que VS traite les sous-répertoires de mon projet d'application Web comme des répertoires virtuels?

+0

J'aimerais beaucoup le savoir aussi. Autoriser les répertoires virtuels à être dans le projet me permettrait de répliquer plus précisément nos structures de sites Web d'environnements de production. – Russell

Répondre

0

Je pense que la façon de procéder est de le configurer comme vous le souhaitez dans IIS avec vos vdirs, puis d'ouvrir le site Web depuis IIS dans Visual Studio. Voir my answer à this question.

+0

merci, j'ai vu ça aussi. cela fonctionne pour les sites Web mais pas les applications Web – kenwarner

2

Un répertoire virtuel contenu dans une application Web dans IIS ressemble simplement à un package dans Visual Studio. En ouvrant l'application racine et en cliquant sur le paquet, il vous demandera si vous voulez ajouter l'application enfant/vdir à la solution. Ensuite, ouvrez-le comme un deuxième projet, vous pouvez alors vous y référer ou le consommer au besoin. L'idée derrière les tests et les déploiements en direct est que vous devriez avoir des données séparées au cas où votre test casse quelque chose. Essentiellement, en utilisant les données en direct pour les tests, vous devez être sûr que vous ne supprimerez/ne modifierez pas quelque chose que vous ne devriez pas ou que vous casserez votre copie en direct des données. Cela dit, si tout ce que vous prévoyez de construire est quelque chose qui lit les données, c'est une bonne idée car cela vous fera économiser beaucoup d'espace disque et de temps sur les déploiements. Obtenez-le comme vous le souhaitez dans IIS, puis ouvrez les choses dans VS.Visual Studio traite toutes les applications virtuelles définies sur le serveur comme une sous-application. Si les ressources ne sont pas configurées dans les répertoires enfants en tant qu'application dans IIS, elles doivent apparaître comme un dossier normal.

Par exemple ...

Si vous configurez 2 sites sur IIS et plan du dossier physique à vos images à la fois comme des répertoires virtuels, vous devriez avoir les accès à des dossiers comme normaux lorsque vous ouvrez soit dans Visual Studio .

Toutefois, si vous créez les répertoires virtuels dans des applications dans IIS, puis ouvrez le site Web dans VS, il doit simplement afficher un package. En cliquant sur ce qui l'ajoute comme un deuxième projet dans VS. Je ne suis pas le meilleur à expliquer les choses mais j'espère que cela a du sens.

Hope it helps :)

0

Je vois un problème similaire avec ma demande avec en ce qui concerne les charges d'avoir des ressources pour copier sur le déploiement.
Je considère la construction d'un gestionnaire de fichiers qui sert de ressources d'image pour le navigateur. C'est à dire. Lorsque vous créez des liens vers des images qui ressemblent à /filehandler.ashx?image=/ads/101/o3904838402384.jpg, vous pouvez disposer d'un paramètre de configuration qui pointe vers des dossiers de fichiers différents ou identiques pour les environnements Test et Live.

Voici un lien vers les principes de base de son fonctionnement.

http://dotnetperls.com/ashx-handler

0

Vous pourrait, utiliser des dossiers liés dans Visual Studio = cela crée un lien virtuel vers un dossier dans un autre projet (ou ailleurs sur le disque), mais ne copie pas physiquement les sur le disque.

+0

Paul, avez-vous essayé cela? –

+0

Pour les petites choses oui, je n'ai pas expérimenté avec quelque chose de particulièrement compliqué, mais c'est ce pour quoi il a été fait (afaik) – Paul

0

Une autre option ... Si vous utilisez SVN et si vous êtes heureux d'avoir les images physiquement deux fois sur le disque, mais encore les synchronisés, est d'utiliser SVN Externals

+0

Paul, vous auriez dû éditer votre réponse originale au lieu d'en ajouter une nouvelle. –

+2

Mais ce sont des réponses différentes ... – Paul

0

Étant donné que ces ressources , y a-t-il une raison particulière pour laquelle vous avez besoin qu'ils soient dans Visual Studio? VS, IMO, est pour gérer le code dans une solution, pas nécessairement la structure de répertoire. Dans IIS, vous pouvez définir la structure de votre répertoire exactement comme vous l'avez (ou même faire pointer le répertoire virtuel vers un lecteur réseau), et Visual Studio peut complètement l'ignorer, car il ne s'agit probablement que d'un ensemble de fichiers statiques. .

+0

Jordan, c'est sympa de pouvoir voir les images en mode Design, et Visual Studio peut vérifier si vos URL sont valides, mais seulement si les images existent réellement sur le disque. –

Questions connexes