2012-05-30 31 views
1

我試圖在ASP.NET MVC 3網站中映射一個虛擬目錄。虛擬目錄僅包含圖像文件,而物理目錄位於另一臺服務器上。當我嘗試通過Web瀏覽器從該目錄訪問圖像,我得到一個HTTP 500錯誤:用於內容文件的ASP.NET MVC NESTED虛擬目錄

Parser Error Message: An error occurred loading a configuration file: Failed to start monitoring changes to '<virtual directory path>' because access is denied. 

[編輯]:重新啓動IIS後,我看到它補充說:「訪問被拒絕」到最後的錯誤信息。但是,該目錄具有「讀取訪問權限」的「所有人」權限,但仍然無法使用。我已經看過詳細說明同樣錯誤的帖子,但是權限設置解決方案並不適合我。

爲什麼在尋找配置文件?我更新了我的Global.asax以忽略有問題的路由,並且在IIS 6中,我可以瀏覽位於虛擬目錄中的文件而沒有問題。我已驗證虛擬目錄不是作爲應用程序設置的。另外,目錄上的權限對Everyone設置具有讀訪問權限。我究竟做錯了什麼?

[編輯#2]:被指向的虛擬目錄是一個網絡共享文件夾...這有什麼區別嗎?我試圖做的IIS 6層次是這樣的:默認網站 - > OurSite(它是一個虛擬目錄的MVC網站) - >圖像(我是虛擬目錄掙扎着)。這是一個嵌套的虛擬目錄,這肯定有問題。如果我將該目錄創建爲默認網站的直接子節點而不是默認網站 - > OurSite,則它可以正常工作。

感謝,

安迪

回答

2

確保運行的應用程序池還對虛擬文件夾執行和列表的權限,它試圖監視它的緩存改變身份。

http://support.microsoft.com/kb/316721/

[編輯]此鏈接表明它可以是其中它不具有權限在共享目錄中的子文件夾的第二種情況。

http://support.microsoft.com/kb/317955

是否ASPNET帳戶可以訪問了那棵樹一路?

+0

感謝您的回覆。不幸的是,這不適合我。該網站運行的應用程序池使用標識:「網絡服務」,我已經在網站級別和虛擬目錄級別爲該特定用戶添加了權限。您發送的鏈接指出,如果「所有人」用戶都有權訪問,那麼您不需要添加應用程序池用戶,但現在,這兩個用戶都可以訪問,但仍然無法使用。 – Andy

+0

看到另一個KB文章,這意味着它可能在該共享驅動器的目錄路徑中更深。您可能會在子文件夾中看到哪些身份正在訪問該共享。 – Turnkey

+0

我已確保共享文件夾的整個層次結構都具有授予NETWORK SERVICE,IUSR_machinename和ASPNET的權限,但它仍不起作用。 – Andy

0

閱讀交鑰匙的答案和你的意見,我只是想指出的是,如果你的應用程序池使用NETWORK SERVICE身份那麼你的遠程服務器需要Web服務器的機/計算機帳戶添加到共享文件夾和NTFS權限NOT的賬號是NETWORK SERVICE
如果添加NETWORK SERVICE到共享文件夾和NTFS權限,你只是添加本地機器NETWORK SERVICE帳戶不是Web服務器NETWORK SERVICE帳戶。我希望我有道理。
每當您使用計算機的NETWORK SERVICE帳戶進行遠程連接時,您實際上正在使用計算機的機器帳戶,因此這就是您需要添加的內容。
假設您的網絡服務器名爲PRODSERVER,您需要將機器/計算機帳戶PRODSERVER $添加到遠程共享文件夾的權限。
希望有所幫助。