Вопрос

Я использую IIS 5.1, в котором у нас есть только один веб-сайт по умолчанию,

У меня есть два проекта v2 и v3

Мой сайт указывает на проекты V2 и иметь несколько папок изображений, стилей и т. Д. Теперь у меня есть виртуальный каталог на этом веб-сайте, который хостинг проекта V3 и имеет ту же иерархию папок, что и V2

на домашней странице обоих проектов у меня есть

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

Но это показывает то же изображение, которое находится в каталоге V2, как я могу показать разные изображения для обоих проектов. Использование «\» получить корню веб-сайта, но как я могу получить корню виртуального каталога под этим веб-сайтом

Это было полезно?

Решение

Этот статический метод возвращает ваш полный HTTP-путь к корневой папке вашего приложения (веб-сайт или виртуальный каталог)

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

Так, вы можете написать на своей странице:

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

Другие советы

Используйте относительные URL-адреса.Смотрите Здесь e.g.«Изображения / BG.jpg» на странице «http://v2/default.html» будет указывать на «http://v2/images/bg.jpg», пока тот же код на странице «http:// v2/v3/default.html "будет указывать на" http://v2/v3/images/bg.jpg "

Так ваш код становится:

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

Однако несчастный побочный эффект состоит в том, что вы не можете переместить домашнюю страницу в структуре каталогов вашего сайта, не нарушая ссылку.

Мне интересно, однако, почему вы выберете такую настройку?Разве не было бы легче просто сделать V3 на веб-сайте и поместить его на тот же уровень каталога, что и V2?

Есть что-то отсутствие от вашего поста, вы можете опубликовать это, пожалуйста?

Вы можете использовать относительный путь

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

Ваш образец кода всегда получит его из корневого каталога.

Может быть, вы можете использовать HttpRuntime.AppDomainAppVirtualPath или Request.ApplicationPath.

Слишком генеракодицетагкод полезен.

Образец использования для моего виртуального каталога <Сильный> / v2

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

Обзор SYSTEM.WEB.VIRTUALPATTORY Класс и методы (.NET 2.0 и позже)

http://msdn.microsoft.com/en--US / Библиотека / System.Web.virtualPactuctivy.aspx

Обзор <Сильные> System.Web.httprequest объект

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top