在.net中(zhōng)創建目錄,大(dà)多數人使用的是Directory.CreateDirectory這個控件,然後,很多人就會發現,一(yī)般在本機調試時可以正常運行,但使用虛拟主機時,就不可以用了,爲什麽呢? 原因如下(xià): 1、Directory控件的運行原理是從根目錄開(kāi)始請求,也就是說,假如您想在E:\web\log下(xià)面再創建一(yī)個目錄,使用Directory控件時,Directory會自動從E盤的根目錄開(kāi)始請求,檢測是否存在; 2、爲什麽本機調試時可以使用呢?因爲大(dà)部分(fēn)程序員(yuán),對于本機的系統安全并沒有做特别的設置,所以默認情況下(xià),程序執行時對本機所有的目錄及分(fēn)區都有訪問的權限,所以在Directory請求時不會報錯; 3、爲什麽在虛拟主機上使用時會報錯,不能執行呢?虛拟主機,是在一(yī)台服務器上創建多個用戶的站點,爲了安全,虛拟主機開(kāi)放(fàng)的權限隻限于用戶目錄下(xià)面的權限,并沒有上級目錄及根目錄的權限,所以Directory請求根目錄的權限時,就會報錯,沒有權限。(注意:如果您使用的虛拟主機有Directory請求根目錄的權限,那麽您選用的虛拟主機服務商(shāng)就太不專業了,基本的安全權限都沒有配好,您的網站内容将無任何安全可言,您網站中(zhōng)的數據将會被任一(yī)個用戶能請求到,能夠看到、下(xià)載到!) 如果解決這個問題呢? 1、因爲隻要正确配制了安全權限的虛拟主機,都不能使用Directory控件來創建目錄,如何解決這個問題呢?這就需要我(wǒ)(wǒ)們想一(yī)個變通的辦法。 2、我(wǒ)(wǒ)們都知(zhī)道,ASP中(zhōng)有一(yī)個FSO的控制功能,而且被大(dà)量使用,基本上99%以上的虛拟主機服務商(shāng)會給用戶開(kāi)放(fàng)這個權限,所以我(wǒ)(wǒ)們就可以調用ASP中(zhōng)的FSO控件來完成目錄的相關操作。 實現方法 可以使用 Object Browser(對象浏覽器)來查看 FSO 模型的對象、集合、屬性、方法、事件和常數。要在 Object Browser(對象浏覽器)中(zhōng)查看 FSO,必須首先向 Microsoft 腳本運行時類型庫添加一(yī)個引用。 向 Microsoft 腳本運行時類型庫添加引用 在 Project(項目)菜單上,單擊 Add Reference(添加引用)。 在 COM 選項卡上,選擇 Microsoft Scripting Runtime(Microsoft 腳本運行時),單擊 Select(選擇),然後單擊 OK(确定)。 現在,FSO 将顯示在 Object Browser(對象浏覽器)中(zhōng)的 Interop.Scripting 節點内。 使用 FileSystemObject 進行編程: 使用 CreateObject 方法創建一(yī)個 FileSystemObject 對象。 将一(yī)個變量定義爲 FileSystemObject 對象。例如: Dim MyFileStream as Scripting.New FileSystemObject。 對新創建的對象使用相應的方法。 訪問對象的屬性。 代碼示例 以下(xià)示例使用 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
|