C#中.net中得IO類雖然功能很強大,但是正是因為功能強大,所以在很多虛擬服務商的伺服器上並不實用。因為IO.Directory和IO.DirectoryInfo在應用程式資料夾操作中,會遍歷網站所在的硬碟的磁碟跟目錄,一般虛擬服務商不會給這個磁碟的Network service使用者開啟讀取權限,所以在操作資料夾的時候,使用IO下的這兩個類別會出現以下錯誤未找到路徑「E:」的一部分。
說明: 執行目前Web 請求期間,出現未處理的例外狀況。請檢查堆疊追蹤信息,以了解有關該錯誤以及程式碼中導致錯誤的出處的詳細資訊。
例外詳細資料: System.IO.DirectoryNotFoundException: 未找到路徑「E:」的一部分。
來源錯誤:
執行目前Web 請求期間產生了未處理的例外狀況。可以使用下面的異常堆疊追蹤資訊來確定有關異常原因和發生位置的資訊。
堆疊追蹤:
[DirectoryNotFoundException: 未找到路徑「E:」的一部分。 ]
System.IO.__Error.WinIOError(Int32 errorCode, String str) +287
System.IO.Directory.InternalCreateDirectory(String fullPath, String path) +489
System.IO.Directory.CreateDirectory(String path) +195
-----------------------
版本資訊: Microsoft .NET Framework 版本:1.1.4322.2300; ASP.NET 版本:1.1.4322.2300
其中未找到路徑E: /,E碟就是伺服器上磁碟路徑,可能會因為伺服器的不同而不同。面對這個問題,服務商又不肯給你多開權限的情況下,該怎麼解決呢?
呵呵,可能是因為我基礎比較差,於是上網尋求解答,但苦苦找不到答案。偶然的一次,發現asp可以應用fso建立資料夾。於是想到用asp.net呼叫window中得fso元件。呵呵,居然成功了,特寫這篇文章給那些苦於此問題不得解決的朋友和兄弟。
專案->參考 瀏覽 COM元件 Microsoft Scripting Runtime
Scripting.FileSystemObject fso=new Scripting.FileSystemObjectClass();
fso.CreateFolder(Path)
就可以了,不過這類解決方法的前提是虛擬服務商開啟了FSO
至於IO操作文件夾得兩個類別為什麼會遍歷磁碟根目錄還在研究中,不過問題終於解決了,希望了解此的人能給大家一個答案。
http://www.cnblogs.com/ccc110/archive/2006/12/22/600480.html