Question

J'utilise IIS 5.1 dans lequel nous n'avons qu'un seul site Web par défaut,

J'ai deux projets V2 et V3

Mon site Web pointe vers les projets V2 et j'ai des images de dossiers, des styles, etc., j'ai maintenant un répertoire virtuel sous ce site Web qui héberge le projet V3 et d'avoir la même hiérarchie de dossiers que V2

Dans la page d'accueil des deux projets, j'ai

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

Mais cela montre la même image qui se trouve dans le répertoire V2, comment puis-je afficher différentes images pour les deux projets. en utilisant "" obtenir la racine du site Web, mais comment puis-je obtenir la racine du répertoire virtuel sous ce site Web

Était-ce utile?

La solution

Cette méthode statique vous renvoie le dossier complet HTTP Path to Root de votre application (site Web ou répertoire virtuel)

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;
}

Ainsi, vous pouvez écrire dans votre page:

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

Autres conseils

Utilisez des URL relatives. Voir ici par exemple "images / bg.jpg" dans la page "http: //v2/default.html" pointera vers "http: //v2/images/bg.jpg" tandis que le même code dans la page "http: // v2 / v3 / default.html "sera pointé vers" http: //v2/v3/images/bg.jpg "

Alors votre code devient:

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

Cependant, un effet secondaire malheureux est que vous ne pouvez pas déplacer votre page d'accueil dans la structure du répertoire de votre site Web sans briser le lien.

Je suis curieux cependant pourquoi vous choisissez ce genre de configuration? Ne serait-il pas plus facile de faire d'un V3 un site Web et de le placer au même niveau d'annuaire que V2?

Il manque quelque chose à votre message, pouvez-vous le poster s'il vous plaît?

Vous pouvez utiliser un chemin relatif

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

Votre échantillon de code l'obtiendra toujours du répertoire racine.

Peut-être que vous pouvez utiliser HttpRuntime.AppDomainAppVirtualPath ou Request.ApplicationPath.

Aussi Page.ResolveUrl("~") est utile.

Échantillon d'utilisation pour mon répertoire virtuel / v2

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

Examen System.Web.VirtualPathutility Classe et méthodes (.net 2.0 et plus tard)

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

Examen System.Web.httpRequest Objet

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top