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操作文件夾得兩個類為什麼會遍歷磁盤根目錄還在研究中,不過問題終於解決了,希望了解此的人能給大家一個答案。