2017-07-28 91 views
0

我在VBS中有一個經典的asp頁面,我試圖用下面的代碼在web服務器上創建一個文件。經典asp在web服務器上創建文本文件:錯誤800a0034 Bad_file_name_or_number

Set fso = CreateObject("Scripting.FileSystemObject") 
Set file1 = fso.CreateTextFile("\\localhost\inetpub\wwwroot\cs\batch\123456dirs.bat", true) 

這將返回以下錯誤:

|666|800a0034|Bad_file_name_or_number

線666是CreateTextFile線。

根據微軟的文檔,這意味着我試圖創建一個無效文件名的文件。然後它解釋了文件名和我的規則似乎是完全有效的。

有關如何進一步排除故障的建議或想法?

+0

的createtextfile功能在Web服務器上,但在本地服務器本身的上下文中運行。你給它的任何路徑必須解析,就好像你登錄到服務器上的Windows桌面並試圖將CD放到該路徑上。除非你創建了一個 –

回答

1

首先要檢查,以確保您的用戶可以訪問該文件夾。假設您未使用Windows身份驗證,請確保IUSR帳戶具有對該文件夾的寫入權限。

秒,除非將inetpub設置爲共享到文件夾,否則語法不起作用。如果你的網站的根位於CS文件夾,你可以這樣做:

Set file1 = fso.CreateTextFile(Server.MapPath("/cs/batch/123456dirs.bat"), true) 
0

createtextfile()函數在Web服務器上運行,但在本地服務器本身的上下文中運行。簡而言之,您提供的任何路徑都必須解析,就好像您已登錄到服務器上的Windows桌面,並試圖將CD轉到該路徑。

格式\ localhost ...是一個UNC路徑。有關UNC路徑和窗口的討論,請參見this question。除非您確實知道映射到\ localhost的UNC路徑,那麼這可能是您的問題。你可能會假定\ localhost是一個合理的路徑,但正如我所說,除非你確定它是可用的,否則這是一個無效的選擇。

最後,如果您決定爲\ localhost設置一個共享,您將進入一個有趣的領域,圍繞Web服務器運行的用戶環境。您將看到必須設置共享被配置爲IIS的運行身份標識的IIS用戶,因此您需要知道該用戶並創建所需的配置以爲該用戶提供共享。

如果是我,我會切換到使用標準的Windows路徑,但即使如此,你需要欣賞的run-as用戶上下文和安全配置等