2009-09-19 270 views
18

我遇到了典型的虛擬目錄的困境,該問題

你有你的ASP.Net應用程序的一些路徑和部署在IIS虛擬應用程序目錄。然後,所有與「web根」(f.i.,「/ images」)相關的路徑都不起作用,因爲該應用程序位於虛擬目錄路徑中。IIS虛擬目錄和ASP.NET目錄路徑


的解決方案

A.製作的 「圖像」 文件夾中的虛擬目錄。這樣「/ images」將一直存在。

B.使用"<%=Request.ApplicationPath%>/Imagenes"作爲我的圖像的來源。這在IIS中非常適用,但我無法在設計時或調試時看到它。

該解決方案還包括這些指令:

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

C.使用親屬路徑的當前控制/頁。這是知道確切位置的圖像文件夾是相對於我目前的文件(沒有去根,所以我會用像「」,「../」,「../../」等。


我在尋找

解決方案說到這裏。我不喜歡這些解決方案。我想在web.config文件或IIS中的解決方案。有些CONF按照壓我在網上寫config文件,告訴IIS在我的應用程序實際駐留(虛擬目錄)。

有什麼建議?

回答

10

是你在哪裏可以使用波浪號(〜)作爲路徑?

〜指虛擬Web應用程序的根....例如

〜/圖像。

+1

替代地,對於非服務器端IMG元素,可以使用「/」字符來指根,如在。 – 2009-09-19 19:44:25

+4

@klabranche,代字號(〜)用於服務器端控件,並且只能在服務器端代碼中使用(http://msdn.microsoft.com/zh-cn/library/ms178116.aspx) @DavidAndres ,斜槓「/」假設你的應用程序位於網站根目錄(不適用於虛擬目錄)。 (http://msdn.microsoft.com/en-us/library/ms178116。aspx) >一個站點根相對路徑,根據站點根(不是應用程序根目錄)解析。 – 2009-09-19 20:08:00

+1

@dealmo - 我確實說了你可以在哪裏....我知道你正在尋找一種替代方法來列出你所列的人。我只是確保你至少在可以的地方完成了你所能做的。 :) – klabranche 2009-09-19 20:15:28

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

我使用此解決方案時沒有將任何路徑與「主題和外觀」結合使用,將圖像與樣式表並排放置在主題目錄中。 – 2012-09-28 12:08:58