2009-09-19 15 views
18

Problem

biegnę do typowego dylematu wirtualny katalog, że masz jakieś ścieżki na aplikacji ASP.NET i wdrożyć aplikację w A IIS wirtualny informator. Wszystkie ścieżki powiązane z "rootem internetowym" (np. "/ Images") nie działają, ponieważ aplikacja znajduje się w ścieżce katalogu wirtualnego.katalog wirtualny IIS i ASP.NET ścieżek katalogów


Rozwiązania

A. Sprawiają, że "obrazy" folder katalog wirtualny. W ten sposób "/ images" zawsze będzie istnieć.

Jako źródło moich zdjęć używaj "<%=Request.ApplicationPath%>/Imagenes". Działa to świetnie w usługach IIS, ale nie widzę go w czasie projektowania ani w czasie debugowania.

Rozwiązanie to obejmuje również następujące czynności:

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

C pomocą krewnych ścieżki dla prądu kontrola/strona. To jest dokładnie wiedzieć, gdzie folder obrazów jest w stosunku do mojego bieżącego pliku (bez przechodzenia do katalogu głównego, więc użyłbym takich rzeczy jak "", "../", "../../" itd.


rozwiązanie szukam

powiedział. nie lubię tych rozwiązań. chciałbym rozwiązanie w pliku web.config lub w IIS. Niektóre conf intruction piszę w internecie plik .config który mówi IIS gdzie mieszka moja aplikacja faktycznie (katalog wirtualny).

Wszelkie porady?

Odpowiedz

10

Czy używasz tyldy (~) do swoich ścieżek, gdzie możesz?

~ odnosi się do korzeni wirtualnej aplikacji internetowej ....

~/images dla przykładu.

+1

alternatywnie, dla non-server-side elementów iMG, można użyć znaku „/”, aby zapoznać się z korzenia, jak w . –

+4

@klabranche, tylda (~) służy do kontroli po stronie serwera i może być używana tylko w kodzie serwera (http://msdn.microsoft.com/en-us/library/ms178116.aspx) @DavidAndres , Slash "/" zakłada, że ​​Twoja aplikacja znajduje się w katalogu głównym witryny sieci Web (nie dotyczy katalogów wirtualnych). (http://msdn.microsoft.com/en-us/library/ms178116.aspx) > Ścieżka względna względem katalogu głównego, która jest rozwiązywana względem katalogu głównego witryny (a nie głównego katalogu aplikacji). –

+1

@dealmo - Powiedziałem, gdzie możesz .... Rozumiem, że szukasz alternatywnego podejścia do tego, które wymieniłeś. Właśnie upewniałem się, że przynajmniej zrobiłeś, co możesz, gdzie możesz. :) – klabranche

3

Jeśli to tylko dla plików css po stronie klienta, a następnie za pomocą dyrektywy url sprawia ścieżki względem do arkusza stylu raczej niż strony:

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

Także, jeśli jesteś w ASP.NET MVC wtedy masz dostęp do:

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

Używam tego rozwiązania bez żadnej ścieżki w połączeniu z "Motywami i skórkami", umieszczając obrazy w katalogu kompozycji obok arkusza stylów. –

Powiązane problemy