2009-09-19 22 views
18

Il problema

sto correndo nel tipico dilemma virtual directory in cui si dispone di alcuni percorsi sulla vostra applicazione ASP.Net e si distribuisce l'applicazione in un virtuale IIS directory. Quindi tutti i percorsi relativi alla "web root" (f.i., "/ images") non funzionano perché l'app si trova in un percorso di directory virtuale.directory virtuale di IIS e percorsi di directory ASP.NET


Le soluzioni

A. fare il "immagini" cartella una directory virtuale. In questo modo "/ images" esisterà sempre.

B. Utilizzare "<%=Request.ApplicationPath%>/Imagenes" come origine delle mie immagini. Funziona perfettamente in IIS ma non riesco a vederlo in fase di progettazione né in fase di debug.

Questa soluzione comprende anche le seguenti istruzioni:

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

C. Utilizzare i parenti percorsi per la corrente controllo/pagina. Questo è sapere esattamente dove la cartella delle immagini è relativa al mio file corrente (senza andare alla radice. Quindi userei cose come "", "../", "../../" e così via.


la soluzione che sto cercando

detto questo. non mi piacciono queste soluzioni. vorrei una soluzione nel file web.config o in IIS. Alcuni intruction conf scrivo nel web file con estensione config che racconta IIS in cui risiede la mia domanda in realtà (directory virtuale).

Qualche consiglio?

risposta

10

Are stai usando la tilde (~) per i tuoi percorsi dove puoi?

~ si riferisce alla radice dell'applicazione Web virtuale ....

~/immagini, per esempio.

+1

in alternativa, per i non-server-side elementi img, è possibile utilizzare il carattere "/" per riferirsi alla radice, come in . –

+4

@klabranche, la tilde (~) è per i controlli lato server e solo utilizzabile in codice lato server (http://msdn.microsoft.com/en-us/library/ms178116.aspx) @DavidAndres , La barra "/" presuppone che l'app si trovi nella radice del sito Web (non per le directory virtuali). (Http://msdn.microsoft.com/en-us/library/ms178116.aspx) > Un percorso relativo alla radice del sito, che viene risolto contro la radice del sito (non la radice dell'applicazione). –

+1

@dealmo - Ho detto dove puoi .... Capisco che stai cercando un approccio alternativo a quello che hai elencato. Mi stavo solo assicurando di aver fatto almeno quello che puoi dove puoi. :) – klabranche

3

Se è solo per i file CSS sul lato client quindi utilizzando la direttiva URL rende il percorso relativo a quella del foglio di stile piuttosto che la pagina:

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

anche se siete su asp.net MVC allora si ha accesso a:

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

Uso questa soluzione senza alcun percorso in combinazione con "Temi e skin", mettendo le immagini nella directory dei temi fianco a fianco con il foglio di stile. –

Problemi correlati