2012-05-21 46 views
1

我在XP上遇到一個奇怪的問題。靜態內容無法在XP上的IIS中的虛擬目錄上工作

我有一個ASP.MVC的Web應用程序與虛擬目錄指向它。

該應用程序工作正常,我看到生成的html頁面。 問題是我得到所有靜態內容文件(CSS,JS和圖像文件)的404錯誤。

真的很奇怪的是,如果我直接在靜態內容所在的目錄上創建應用程序,但是我無法從指向同一目錄的虛擬目錄獲取靜態內容!

順便說一下,靜態內容從VS2010爲應用程序創建的虛擬目錄中提供服務。

我無法找到在VS2010創建的虛擬目錄(工作)和不工作的虛擬目錄之間的配置中的任何差異。

我任何人有任何想法,我會非常gratefull ...

感謝,

Nadav

回答

1

我懷疑你已硬編碼的URL像那些靜態文件:

<script type="text/javascript" src="/scripts/foo.js"></script> 

而不是使用網址助手:

<script type="text/javascript" src="@Url.Content("~/scripts/foo.js")"></script> 

這當然會考慮虛擬目錄的存在和產生正確的URL來當應用程序在虛擬目錄中託管於該靜態文件:

<script type="text/javascript" src="/myappname/scripts/foo.js"></script> 
+0

不,實際上我使用@ Url.Content ()爲所有靜態內容。 而且我在Fiddler看到請求的URL是正確的。 – Nadav

+0

另外,如果我在IIS管理工具(控制面板/管理工具/ Internet信息服務)中打開網站並單擊瀏覽其中一個靜態內容文件,也會發生此問題。 如果應用程序是一個虛擬目錄,我得到404,如果應用程序不是虛擬目錄,則顯示內容。 這絕對是IIS中配置中的問題,而不是我的應用程序中的問題。 – Nadav