在.net中創建目錄,大多數人使用的是Directory.CreateDirectory這個控件,然后,很多人就會發現,一般在本機調試時可以正常運行,但使用虛擬主機時,就不可以用了,為什么呢?
原因如下:
1、Directory控件的運行原理是從根目錄開始請求,也就是說,假如您想在E:\web\log下面再創建一個目錄,使用Directory控件時,Directory會自動從E盤的根目錄開始請求,檢測是否存在;
2、為什么本機調試時可以使用呢?因為大部分程序員,對于本機的系統安全并沒有做特別的設置,所以默認情況下,程序執行時對本機所有的目錄及分區都有訪問的權限,所以在Directory請求時不會報錯;
3、為什么在虛擬主機上使用時會報錯,不能執行呢?虛擬主機,是在一臺服務器上創建多個用戶的站點,為了安全,虛擬主機開放的權限只限于用戶目錄下面的權限,并沒有上級目錄及根目錄的權限,所以Directory請求根目錄的權限時,就會報錯,沒有權限。(注意:如果您使用的虛擬主機有Directory請求根目錄的權限,那么您選用的虛擬主機服務商就太不專業了,基本的安全權限都沒有配好,您的網站內容將無任何安全可言,您網站中的數據將會被任一個用戶能請求到,能夠看到、下載到!)
如果解決這個問題呢?
1、因為只要正確配制了安全權限的虛擬主機,都不能使用Directory控件來創建目錄,如何解決這個問題呢?這就需要我們想一個變通的辦法。
2、我們都知道,ASP中有一個FSO的控制功能,而且被大量使用,基本上99%以上的虛擬主機服務商會給用戶開放這個權限,所以我們就可以調用ASP中的FSO控件來完成目錄的相關操作。
實現方法
可以使用 Object Browser(對象瀏覽器)來查看 FSO 模型的對象、集合、屬性、方法、事件和常數。要在 Object Browser(對象瀏覽器)中查看 FSO,必須首先向 Microsoft 腳本運行時類型庫添加一個引用。
向 Microsoft 腳本運行時類型庫添加引用
在 Project(項目)菜單上,單擊 Add Reference(添加引用)。
在 COM 選項卡上,選擇 Microsoft Scripting Runtime(Microsoft 腳本運行時),單擊 Select(選擇),然后單擊 OK(確定)。 現在,FSO 將顯示在 Object Browser(對象瀏覽器)中的 Interop.Scripting 節點內。
使用 FileSystemObject 進行編程:
使用 CreateObject 方法創建一個 FileSystemObject 對象。
將一個變量定義為 FileSystemObject 對象。例如:
Dim MyFileStream as Scripting.New FileSystemObject。
對新創建的對象使用相應的方法。
訪問對象的屬性。
代碼示例
以下示例使用 FileSystemObject 對象的實例來讀取文件并寫入文件內容。
Public Class UsesScripting Public Shared Sub Main() Dim fileSystem As New Scripting.FileSystemObject() Dim file As Scripting.TextStream file = fileSystem.OpenTextFile("E: est.txt", _ Scripting.IOMode.ForReading, False,_ Scripting.Tristate.TristateUseDefault) Dim contents As String = file.ReadAll() Console.WriteLine(contents) file.Close() End Sub
End Class
|