2013-04-22 90 views
0

我試圖讀取虛擬路徑的文件,使用下面的代碼HostingEnvironment.VirtualPathProvider.FileExists返回虛假現有文件

HostingEnvironment.VirtualPathProvider.FileExists(_SiteMapFileName) 

_SiteMapFileName有類似「〜/內容/ EN-US/MainMenu.sitemap「,它總是返回false

但是,如果我訪問該虛擬路徑(http://www.local.mysite.com/Content/en-US/MainMenu.sitemap)的URL,文件正確顯示在瀏覽器中

Content是在我的網站上虛擬目錄,指向一個共享文件夾上的不同位置。如果我在Windows資源管理器中訪問該位置,我可以正確地看到這些文件

我已將網站和虛擬目錄設置爲我的網絡帳戶。

我使用的過程監控工具來看看是否有任何問題,它說的w3wp.exe試圖創建文件\路徑\爲\共享\位置\內容\ EN-US \ MainMenu.sitemap但它是越來越訪問被拒絕這是好的,因爲它是一個只讀的位置

現在有人如何解決這個問題?

回答

2

我找到了原因。設置爲運行綁定到應用程序的應用程序池的用戶需要對該文件嘗試讀取的權限,而不僅僅是網站和虛擬目錄。 :/

1

當我正在使用vDir我使用Server.MapPath 這不適合你嗎?

if(System.IO.File.Exists(Server.MapPath("Relative Path to vDir"))) 
{ 
    //do something with the file 
} 
+0

我通常使用Server.MapPath獲取物理路徑..在這種情況下,我確實想測試虛擬路徑以查看文件是否存在 – pollirrata 2013-04-22 20:29:48