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
|
其中未找到路徑E:/,E盤就是伺服器上磁碟路徑,可能會因為伺服器的不同而不同。面對這個問題,服務商又不肯給你多開許可權的情況下,應該怎麼解決呢?
呵呵,可能是因為我基礎比較差,於是上網尋求解答,但是苦苦找不到答案。偶然的一次,發現asp可以應用fso建立檔案夾。於是想到用asp.net調用window中得fso組件。呵呵,居然成功了,特寫這篇文章給那些苦於此問題不得解決的朋友和兄弟。
項目->引用 瀏覽 COM組件 Microsoft Scripting Runtime
Scripting.FileSystemObject fso=new Scripting.FileSystemObjectClass();
fso.CreateFolder(Path)
就可以了,不過此種解決方案的前提是虛擬服務商開啟了FSO
至於IO操作檔案夾得兩個類為什麼會遍曆磁碟根目錄還在研究中,不過問題終於解決了,希望瞭解此的人能給大家一個答案。