簡體   English   中英

多次使用后,fso.OpenTextFile拒絕了VBScript / Classic ASP權限

[英]VBScript/Classic ASP permission denied with fso.OpenTextFile after several uses

我有一個過程,該過程循環遍歷大量數據(1MB),將其存儲在陣列中,然后定期將其寫入磁盤。 經過幾次迭代后,腳本在我的else部分的fso.OpenTextFile()處失敗,好像該文件自上次調用該函數以來尚未關閉或尚未完成關閉。 迭代#似乎並不具體,因為據我所知,它發生在第2次和第10次迭代之間的任何地方。 該文件實際上是創建並附加到的,因此它似乎不是權限問題。 我正在考慮給流程增加時間延遲,但不想一定要為已經很長的流程增加開銷。

作業系統:Windows 2012 R2

任何想法或建議表示贊賞。

'Write array to disk
sub writeFile()
        'on error resumenext
        set fso = Server.CreateObject("Scripting.FileSystemObject")
        if needToCreateFile then
            set objTextFile = fso.CreateTextFile(server.mappath("google/linklist.html"),true)
            objTextFile.writeLine("<!DOCTYPE html>")
            objTextFile.writeLine("<html>")
            objTextFile.writeLine("<title>")
            objTextFile.writeLine("Content Listing")
            objTextFile.writeLine("</title>")
            needToCreateFile = false
        else 
            ' OpenTextFile Method needs a Const value
            ' ForAppending = 8 ForReading = 1, ForWriting = 2
            Set objTextFile = fso.OpenTextFile (filename, ForAppending, True)
        end if

        'Write contents of array to file
        for each link in linkList
            if link <>"" and not isNull(link) then
                objTextFile.writeLine(link & "<br>")
            end if
        next
        objTextFile.writeLine("</html>")
        objTextFile.Close
        set fso = nothing
        set objTextFile = nothing
        'on  error goto 0

end sub

跟進-解決

添加3秒的延遲可以解決該問題,但是會大大延遲處理時間。 因此,與其在每次想寫入文件時都打開和關閉文件,不如將它保持打開狀態直到整個腳本完成為止,因此不需要延遲。

sub writeFile()

        if needToCreateFile then
            set objTextFile = fs.CreateTextFile(server.mappath("google/linklist.html"),true)
            objTextFile.writeLine("<!DOCTYPE html>")
            objTextFile.writeLine("<html>")
            objTextFile.writeLine("<title>")
            objTextFile.writeLine("Content Listing")
            objTextFile.writeLine("</title>")
            needToCreateFile = false
        end if

        'Write contents of array to file
        for each link in linkList
            if link <>"" and not isNull(link) then
                objTextFile.writeLine(link & "<br>")
            end if
        next
        objTextFile.writeLine("</html>")
       ' objTextFile.Close
       ' set fso = nothing
       ' set objTextFile = nothing
end sub

添加3秒的延遲可以解決該問題,但是會大大延遲處理時間。 因此,與其在每次想寫入文件時都打開和關閉文件,不如將它保持打開狀態直到整個腳本完成為止,因此不需要延遲。 請參閱上面的修改腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM