2013-05-07 5 views
0

Cela semble être un cas d'utilisation assez courant, mais je ne peux pas trouver d'informations sur la façon de le configurer.Servir des fichiers statiques en développement avec IIS Express et Visual Studio 2012

J'ai un site "Admin" où je télécharge des images et ensuite mon site web normal (projet séparé) où j'ai besoin d'afficher ces images. Les deux projets doivent pouvoir afficher les images (je ne peux donc pas simplement les stocker dans le répertoire du projet du site Web et les appeler un jour).

En production, ceci est une évidence. Je viens de configurer un répertoire virtuel dans IIS, mais en développement dans Visual Studio, il n'y a pas de support direct pour cela. J'ai vu des choses en ligne qui vous disent d'aller dans les fichiers de configuration IIS Express et d'ajouter le répertoire virtuel manuellement, mais il y a deux gros problèmes: 1) Je suis dans un environnement multi-développeur et je demande à chaque développeur de le faire 2) il n'y a pas de façon automatisée de référencer ce répertoire statique dans mon code, ce qui implique beaucoup de chemins de codage pour les références d'image, ce qui est une très mauvaise idée. Je sais aussi que je peux créer des liens dans mon projet, mais j'ai affaire à des uploads, pas à des ressources statiques que je connais au moment du design, créant ainsi des liens pour chaque nouveau téléchargement manuellement dans mon projet (surtout quand c'est seulement pour tester en développement) est fou.

Alors, quel est le meilleur moyen de partager de manière dynamique des ressources entre projets à des fins de développement dans Visual Studio? Pour ce que ça vaut, ce sont deux projets ASP.NET MVC 4 et j'utilise Visual Studio 2012 sur une boîte Windows 7.

EDIT Je dois spécifier que lors du téléchargement de l'image, un chemin relatif à cette image est stocké dans une table de base de données. Je suppose que mon vrai problème est de résoudre ce chemin partiel dans une URL réelle accessible à partir d'un projet entièrement différent. Si j'étais dans le même projet, je voudrais simplement quelque chose comme Url.Content(Model.ImageUrl), mais cela ne va évidemment pas résoudre si l'image n'est pas réellement dans le même projet.

+0

Votre défi consiste-t-il à gérer les dossiers ou à créer les liens? –

+0

Je suppose que vous pourriez dire les deux. Je ne m'inquiète pas vraiment où les fichiers sont réellement stockés, et en fait, je ne * veux * pas vraiment m'inquiéter. Nous pouvons les héberger avec le projet, les déplacer vers un CDN, etc., en production. Mais, je veux idéalement être capable de référencer les fichiers de façon abstraite dans mon code (comme utiliser 'Url.Content()' ou même un assistant personnalisé si j'en ai besoin). Je préférerais vraiment ne pas coder les chemins. –

+0

Eh bien, il y a beaucoup de façons de le faire, mais la façon la plus évidente est de créer une table de mappage avec un ID PK et un chemin de chaîne. Vous pouvez faire le chemin que vous voulez, et vous pouvez utiliser l'ID dans votre URL. –

Répondre

1

On m'a fait remarquer que je ne pensais pas à cela.

En production, les fichiers seraient bien entendu diffusés via un répertoire virtuel, mais en développement, peu importe d'où ils proviennent. Donc, tout ce que je dois vraiment faire est d'ajouter un paramètre d'application pour le préfixe d'URL statique à ajouter à l'URL de l'image relative.

Pour le développement, ce serait juste le port local + de mon site d'administration. Ensuite, dans ma version web.config de transformation, je voudrais juste le changer à l'URL de production, c'est à dire quelque chose comme "http://static.mydomain.com". Dans mon code d'application, je consulte simplement le paramètre de cette application et le place dans l'URL de mon image relative.

Si je rencontre des problèmes avec cette approche, je les noterai ici avec des solutions appropriées, une fois que j'ai l'occasion de l'implémenter.

Questions connexes