Domanda

Sto usando IIS 5.1 in cui abbiamo solo un solo sito Web predefinito,

Ho due progetti V2 e V3

Il mio sito Web punta a progetti V2 e avere alcune cartelle, stili ecc. Ora ho una directory virtuale con questo sito Web che ospita il progetto V3 e avendo la stessa gerarchia di cartelle come V2

Nella home page di entrambi i progetti che ho

.

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

Ma questo mostra la stessa immagine nella directory V2, come posso mostrare immagini diverse per entrambi i progetti. Usando "\" Ottieni la radice del sito Web ma come posso ottenere la radice della directory virtuale in quel sito Web

È stato utile?

Soluzione

Questo metodo statico restituisce il percorso HTTP completo alla cartella principale della tua applicazione (sito Web o directory virtuale)

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

Allora, puoi scrivere nella tua pagina:

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

Altri suggerimenti

Utilizzare gli URL relativi.Vedi qui e.g."Immagini / BG.jpg" nella pagina "http://v2/default.html" punta a "http://v2/images/bg.jpg" mentre lo stesso codice nella pagina "http:// v2/v3/default.html "punta a" http://v2/v3/mages/bg.jpg "

Quindi il tuo codice diventa:

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

Tuttavia, uno sfortunato effetto collaterale è che non è possibile spostare la tua homepage nella struttura della directory del tuo sito web senza interrompere il collegamento.

Sono curioso comunque perché sceglieresti questo tipo di configurazione?Non sarebbe più facile creare un sito Web V3 e posizionarlo sullo stesso livello di directory di V2?

C'è qualcosa che manca dal tuo post, puoi postarlo per favore?

È possibile utilizzare relativo Pathing

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

Il campione di codice lo farà sempre dalla directory principale.

Forse è possibile utilizzare HttpRuntime.AppDomainAppVirtualPath o Request.ApplicationPath.

Too Page.ResolveUrl("~") è utile.

.

Esempio di utilizzo per la mia directory virtuale / V2

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

Review System.Web.VirtualPassationPassationAtility Classe e Metodi (.NET 2.0 e successivi)

http://msdn.microsoft.com/en-Stati Uniti / Biblioteca / System.Web.VirtualPathautility.aspx

Review System.web.httprequest Oggetto

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
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top