Pergunta

Estou usando o iis 5.1, no qual temos apenas um site padrão,

Eu tenho dois projetos v2 e v3

Meu site aponta para projetos V2 e tem algumas imagens de pastas, estilos etc. Agora, tenho um diretório virtual neste site que está hospedando o Projeto V3 e com a mesma hierarquia de pastas que V2

na página inicial de ambos os projetos que tenho

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

mas isso mostra a mesma imagem que está no diretório v2. Como posso mostrar imagens diferentes para ambos os projetos.usando "\" obtenha a raiz do site, mas como posso obter a raiz do diretório virtual nesse site

Foi útil?

Solução

Este método estático retorna o caminho http completo para a pasta raiz do seu aplicativo (site ou diretório 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;
}

Então, você pode escrever em sua página:

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

Outras dicas

Use URLs relativos.Ver aqui por exemplo."images/bg.jpg" na página "http://v2/default.html" apontará para "http://v2/images/bg.jpg" enquanto o mesmo código na página "http://v2 /v3/default.html" apontará para "http://v2/v3/images/bg.jpg"

Então seu código se torna:

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

No entanto, um efeito colateral infeliz é que você não pode mover sua página inicial na estrutura de diretórios do site sem quebrar o link.

Estou curioso, mas por que você escolheria esse tipo de configuração?Não seria mais fácil transformar a v3 em um site e colocá-la no mesmo nível de diretório da v2?

falta alguma coisa na sua postagem, você pode postar, por favor?

Você poderia usar o caminho relativo

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

Seu exemplo de código sempre o obterá do diretório raiz.

Talvez você possa usar HttpRuntime.AppDomainAppVirtualPath ou Request.ApplicationPath.

Também Page.ResolveUrl("~") é útil.

Amostra de uso para meu diretório virtual /v2

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

Análise System.Web.VirtualPathUtility Classe e métodos (.Net 2.0 e posterior)

http://msdn.microsoft.com/en-us/library/system.web.virtualpathutility.aspx

Análise System.Web.HttpRequest Objeto

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

Public Function GetRoot() As String
    Return System.Web.VirtualPathUtility.MakeRelative(Request.FilePath, Request.ApplicationPath)
End Function
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top