2012-11-01 76 views
0

當文件實際存在時,File.Exists返回false。當文件存在時,ASP.NET File.Exists返回false

我知道如果沒有讀取權限,它會返回錯誤,但我似乎無法正確理解。

更多信息:

我的FTP目錄的組織,像這樣:

Root 

    ImageSite 

     ImageDirectory 

    MySite 

     My .aspx.cs File that's calling File.Exists() 

我試着上傳.aspx.cs用相同的FTP用戶帳戶ImageSite & ImageDirectory文件。沒有幫助。

我也嘗試用反斜槓替換正斜線,只是爲了確保。

這是我的代碼 - 我將文件路徑硬編碼到圖像目錄的完整ftp路徑。

 string serverUrl [email protected]"\\fs4-n01\blah\blah\blah\ImageSite.com\web\content\Images\" + product.ImageUrl; 
     bool exists = File.Exists(serverUrl); 

我也想到了冒充。我已經在我的web.config中使用了一個身份模擬,它似乎並沒有讓我使用兩者,所以我把它放在我的代碼文件所在的子目錄下,標記下。但它似乎沒有這樣做。 (無論哪種方式,文件的所有者與圖像目錄相同,如我所述)。

我正在使用ASP.NET 4.0。

任何想法,將不勝感激。

+1

由url看起來像你使用samba(文件共享),而不是ftp。那是對的嗎?你真的可以從代碼中的路徑在資源管理器中打開文件嗎?你的代碼也在不同的用戶下運行(也許該用戶無法訪問該文件共享)? – csauve

+0

這是否說明站點運行(請參閱應用程序池標識)是否有權讀取目錄? – Oded

+0

不確定,我絕對可以通過FTP訪問它。我從使用File.GetDirectoryName(Server.MapPath(「〜」))獲取該URL ... – Rivka

回答

2

我打電話給我的託管服務提供商(Rackspace),並被告知.NET的工作方式是出於安全原因,您無法訪問內容目錄之外的文件。 (對於ASP經典網站,它確實讓你,截至目前。)

+0

你能提供任何文件來備份這些信息嗎? –

+0

@RyanGates澄清,這是針對雲網站環境的特定於Rackspace的限制。 – Rivka

+0

我明白了。感謝您補充說明。 –

相關問題