2009-09-19 10 views
18

Le problème

que je cours dans le dilemme typique répertoire virtuel dans ce que vous avez des chemins sur votre application ASP.Net et déployer l'application dans un virtuel IIS annuaire. Ensuite, tous les chemins associés à la "racine Web" (f.i., "/ images") ne fonctionnent pas car l'application se trouve dans un chemin de répertoire virtuel.répertoire virtuel IIS et les chemins de répertoire ASP.NET


Les solutions

A. rendre le dossier "images" un répertoire virtuel. De cette façon "/ images" existera toujours.

B. Utilisez "<%=Request.ApplicationPath%>/Imagenes" comme source de mes images. Cela fonctionne très bien dans IIS mais je ne le vois pas au moment du design ni au débogage.

Cette solution comprend également les instructions suivantes:

  • System.Web.VirtualPathUtility.ToAbsolute
  • ResolveClientUrl
  • Request.ApplicationPath

C. Utilisez Les chemins de parents au courant contrôle/page. Ceci est de savoir exactement où le dossier images est relatif à mon fichier actuel (sans aller à la racine.) Donc j'utiliserais des choses comme "", "../", "../../" et ainsi de suite


la solution que je suis à la recherche

dit. Je n'aime pas ces solutions. Je veux une solution dans le fichier web.config ou dans IIS. Certains intruction j'écris conf dans le web fichier .config qui indique IIS où ma demande réside effectivement (répertoire virtuel).

Un conseil?

Répondre

10

Est-ce vous utilisez le tilde (~) pour vos chemins où vous pouvez?

~ se réfère à la racine de l'application Web virtuel ....

~/images par exemple.

+1

alternativement, pour les éléments non côté serveur img, vous pouvez utiliser le caractère «/» pour se référer à la racine, comme dans . –

+4

@klabranche, le tilde (~) est pour les contrôles côté serveur et utilisable uniquement dans le code côté serveur (http://msdn.microsoft.com/en-us/library/ms178116.aspx) @DavidAndres , La barre oblique "/" suppose que votre application se trouve dans la racine du site Web (pas pour les répertoires virtuels). (http://msdn.microsoft.com/en-us/library/ms178116.aspx) > Un chemin relatif à la racine du site, qui est résolu par rapport à la racine du site (pas à la racine de l'application). –

+1

@dealmo - J'ai dit où vous pouvez .... Je comprends que vous êtes à la recherche d'une approche alternative à celle que vous avez énumérée. Je faisais simplement en sorte que vous ayez au moins fait ce que vous pouviez. :) – klabranche

3

Si c'est juste pour les fichiers CSS du côté client puis en utilisant la directive url fait le chemin par rapport à celle de la feuille de style plutôt que la page:

h1#title { background: url('dog.gif') no-repeat 0 0; } 

Aussi, si vous êtes sur asp.net mvc alors vous avez accès à:

<script src="<%= Url.Content("~/scripts/new.js") %>" type="text/javascript"></script> 
+0

J'utilise cette solution sans aucun chemin en combinaison avec "Thèmes et Peaux", en plaçant les images dans le répertoire du thème côte à côte avec la feuille de style. –

Questions connexes