2009-09-19 36 views
18

El problema

estoy corriendo en el típico dilema directorio virtual en el que usted tiene algunas rutas en su aplicación ASP.Net y se implementa la aplicación en una virtual de IIS directorio. Entonces, todos los paths relativos a la "raíz web" (f.i., "/ images") no funcionan porque la aplicación se encuentra en una ruta de directorio virtual.directorio virtual de IIS y ASP.NET rutas de directorio


Las soluciones

A. Hacer las "imágenes" carpeta de un directorio virtual. De esta manera, "/ images" siempre existirá.

B. Utilice "<%=Request.ApplicationPath%>/Imagenes" como origen de mis imágenes. Esto funciona muy bien en IIS, pero no puedo verlo en tiempo de diseño ni en depuración.

Esta solución también incluyen estas instrucciones:

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

C. Use parientes rutas de acceso a la corriente control/página. Esto es saber exactamente dónde está la carpeta de imágenes en relación con mi archivo actual (sin ir a la raíz. Así que usaría cosas como "", "../", "../../", etc.


la solución Busco

dicho eso. no me gustan estas soluciones. me gustaría una solución en el archivo web.config o en IIS. Algunos Intruction conf que escribir en la web archivo .config que dice IIS donde mi aplicación reside en realidad (directorio virtual).

Algún consejo?

Respuesta

10

son ¿Estás usando la tilde (~) para tus caminos donde puedes?

~ se refiere a la raíz de la aplicación Web virtual ....

~/imágenes, por ejemplo.

+1

, alternativamente, por los elementos img no del lado del servidor, puede utilizar el carácter "/" para referirse a la raíz, como en . –

+4

@klabranche, la tilde (~) es para controles del lado del servidor y sólo se puede utilizar en el código del lado del servidor (http://msdn.microsoft.com/en-us/library/ms178116.aspx) @DavidAndres , La barra inclinada "/" asume que su aplicación está en la raíz del sitio web (no para directorios virtuales). (http://msdn.microsoft.com/en-us/library/ms178116).aspx) > Una ruta relativa al sitio raíz, que se resuelve contra la raíz del sitio (no la raíz de la aplicación). –

+1

@dealmo - Dije dónde puede ... Entiendo que esté buscando un enfoque alternativo al de su lista. Solo me estaba asegurando de que al menos has hecho lo que puedes donde puedes. :) – klabranche

3

Si es sólo para los archivos CSS en el lado cliente entonces usando la directiva url hace la ruta relativa a la de la hoja de estilo en lugar de la página:

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

Además, si estás en asp.net mvc entonces usted tiene acceso a:

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

Utilizo esta solución sin ningún camino en combinación con "Temas y máscaras", colocando las imágenes en el directorio del tema al lado de la hoja de estilo. –

Cuestiones relacionadas