2009-09-19 3 views
18

Проблема

Я бегу в типичной виртуальной директории дилеммы в том, что у вас есть несколько путей на вашем приложении ASP.Net, и развертывать приложения в виртуальной IIS каталог. Тогда все пути родственников к «веб-корню» (f.i., «/ images») не работают, потому что приложение находится в пути к виртуальному каталогу.IIS виртуального каталога и пути каталогов ASP.NET


Решения

А. сделать "изображения" папку виртуального каталога. Таким образом, «/ images» всегда будет существовать.

B. Использовать "<%=Request.ApplicationPath%>/Imagenes" как источник моих изображений. Это отлично работает в IIS, но я не могу видеть его во время разработки или в режиме отладки.

Это решение также включает следующие инструкции:

  • System.Web.VirtualPathUtility.ToAbsolute
  • ResolveClientUrl
  • Request.ApplicationPath

C. Использование родственников пути к току контроль/страница. Это точно знает, где папка с изображениями относится к моему текущему файлу (без перехода к корню, поэтому я бы использовал такие вещи, как «", "../", "../../" и т. Д.


решение Я ищу

сказал. Я не люблю эти решения. Я хотел бы решение в файле web.config или в IIS. Некоторые конфы intruction я пишу в Интернете .config файл, который говорит IIS, где мое приложение находится на самом деле (виртуальный каталог).

Любые советы?

ответ

10

ли вы используете тильду (~) для своих путей, где вы можете?

~ относится к корню веб-приложения виртуальной ....

~/изображений, например.

+1

в качестве альтернативы, для не-серверных Img элементов, вы можете использовать символ «/», чтобы обратиться к корню, как и в . –

+4

@klabranche, тильда (~) предназначена для управления на стороне сервера и использоваться только в серверном коде (http://msdn.microsoft.com/en-us/library/ms178116.aspx) @DavidAndres , Слэш «/» предполагает, что ваше приложение находится в корневом каталоге веб-сайта (а не для виртуальных каталогов). (Http://msdn.microsoft.com/en-us/library/ms178116.aspx) > Корневой относительный путь к сайту, который разрешен в корне сайта (а не в корне приложения). –

+1

@dealmo - Я сказал, где вы можете ... Я понимаю, что вы ищете альтернативный подход к тому, что вы указали. Я просто убедился, что вы, по крайней мере, сделали все возможное там, где можете. :) – klabranche

3

Если это только для CSS-файлов на стороне клиента, а затем с помощью директивы URL-адрес делает путь относительно к тому, что таблицы стилей, а не на странице:

h1#title { background: url('dog.gif') no-repeat 0 0; } 

Кроме того, если вы на asp.net то MVC имеют доступ к:

<script src="<%= Url.Content("~/scripts/new.js") %>" type="text/javascript"></script> 
+0

Я использую это решение без какого-либо пути в сочетании с «Темы и скины», помещая изображения в каталог темы рядом со списком стилей. –