2012-05-21 76 views
2

我在網絡驅動器上共享的文件夾中有大量文件。我正試圖將這些文件存入我的代碼中。但它給了一個錯誤:從網絡位置讀取文件

System.IO.DirectoryNotFoundException was unhandled by user code

Fname = txtwbs.Text; 
DirectoryInfo objDir = new DirectoryInfo("Y:\\"); 
_xmlpath = objDir + "\\" + Fname + "\\" + Fname + ".xml"; 
if (File.Exists(_xmlpath)) 
{ 
    reader(_xmlpath); 
} 

我也用:

file = fopen("\\\\10.0.2.20\\smartjobs\\Eto\\"+Fname); 

我能夠從我的本地PC閱讀文件,但它給異常僅限於網絡位置。請讓我知道如何從網絡共享位置讀取文件。

還有我如何將文件夾的樹視圖轉換爲Asp.net Web應用程序。

目錄結構就是這樣

\\10.0.2.20\Smartjobs\Eto\ 

這是父目錄爲XML文檔它congaing文件夾的號。

+0

是否可以從其他位置查看文件,如從資源管理器窗口?也許你的機器沒有讀取權限。 – npinti

+0

你的應用程序池運行在什麼標識下?該身份很可能無法訪問網絡驅動器。 –

回答

0

您需要指定ASP.net頁面以可以訪問文件的特定用戶身份運行。然後,您需要在web.config文件中啓用impersonation,以便ASP.net實際訪問文件user

Your Y drive is a mapped network drive. You need to use the network url eg \\server\Smartjobs\Eto\xyz.xml

您在network指定文件的name就像你從別的地方做:

Dim myStream As IO.FileStream = IO.File.Open("\\myserver\myshare\myfile", IO.FileMode.Open) 
Dim myBytes As Byte() 
myStream.Read(myBytes, 0, numberOfBytesToRead) 

更多參考:
Unable to List File or Directory Contents on ASP.NET Page using Shared Drive
Using file on network via IIS

1

在asp.net,您不能直接訪問網絡文件夾,因爲asp.net運行在匿名用戶帳戶下,該帳戶不會有權訪問該位置。

您可以授予該共享位置中的「每個人」的權利並查看它是否正常工作。但是這不可取。

Alternativly在訪問網絡位置時,您可能必須在asp.net代碼中進行模擬。您必須與有權訪問該共享位置的用戶進行實施。

0

您可能將共享目錄映射爲用戶,但您忘記了asp.net正在池的帳戶下運行,並且您沒有將y:\與共享目錄連接。

下認爲你能做的就是直接嘗試通過網絡共享名進行連接,例如:\\SharedCom\fulldir\file.xml