Pregunta

Estoy usando iis 5.1 en el que solo tenemos un sitio web predeterminado,

Tengo dos proyectos v2 y v3.

Mi sitio web apunta a proyectos V2 y tiene algunas imágenes de carpetas, estilos, etc. Ahora tengo un directorio virtual en este sitio web que aloja el Proyecto V3 y tiene la misma jerarquía de carpetas que V2

en la página de inicio de ambos proyectos tengo

img src="\images\edlogo.gif" alt="logotipo"/>

pero esto muestra la misma imagen que está en el directorio v2. ¿Cómo puedo mostrar imágenes diferentes para ambos proyectos?usando "\" obtenga la raíz del sitio web, pero ¿cómo puedo obtener la raíz del directorio virtual en ese sitio web?

¿Fue útil?

Solución

Este método estático le devuelve la ruta http completa a la carpeta raíz de su aplicación (sitio web o directorio virtual)

public static string GetAppRootUrl(bool endSlash) { 
   string host = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
   string appRootUrl = HttpContext.Current.Request.ApplicationPath;
   if (!appRootUrl.EndsWith("/")) //a virtual
   {
       appRootUrl += "/";
   }
   if (!endSlash)
   {
       appRootUrl = appRootUrl.Substring(0, appRootUrl.Length - 1);
   }
   return host + appRootUrl;
}

Entonces, puedes escribir en tu página:

<img src="<%= Server.HtmlEncode(GetAppRootUrl(false)) %>/images/edlogo.gif" alt="logo"/>

Otros consejos

Utilice las URL relativas.Consulte aquí e.g."Imágenes / bg.jpg" en la página "http://v2/default.html" se apuntará a "http://v2/images/bg.jpg", mientras que el mismo código en la página "http:// v2/v3/default.html "apuntará a" http://v2/v3/images/bg.jpg "

Entonces, su código se convierte en:

img src="images\edlogo.gif" alt="logo"/>

Sin embargo, un efecto secundario desafortunado es que no puede mover su página de inicio en la estructura del directorio de su sitio web sin romper el enlace.

¡Sin embargo, tengo curiosidad por qué elegirías este tipo de configuración?¿No sería más fácil simplemente hacer un sitio web V3 un sitio web y colocarlo en el mismo nivel de directorio que V2?

Hay algo que falta en su publicación, ¿puede publicarlo por favor?

Podrías usar la ruta relativa

 <img src="../images/edlogo.gif" alt="logo"/>

La muestra de código siempre lo obtendrá desde el directorio raíz.

Tal vez puedas usar HttpRuntime.AppDomainAppVirtualPath o Request.ApplicationPath.

También Page.ResolveUrl("~") es útil.

Ejemplo de uso para mi directorio virtual /v2

    HttpRuntime.AppDomainAppVirtualPath = /v2
    Request.ApplicationPath = /v2
    Request.FilePath = /v2/Inicio.aspx
    GetAppRootUrl(false) = http://localhost:2029/v2
    Page.ResolveUrl("~") = /v2/

Revisión Clase & Methods (.NET 2.0 y posterior)

http://msdn.microsoft.com/en-EE. UU. / Library / System.Web.VirtualPathutility.aspx

Revisión Objeto

http://msdn.microsoft.com/en-us/library/system.web.httprancst.filepath(v=vs.100).aspx

Public Function GetRoot() As String
    Return System.Web.VirtualPathUtility.MakeRelative(Request.FilePath, Request.ApplicationPath)
End Function

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top