【问题标题】:classic asp create text file on webserver: error 800a0034 Bad_file_name_or_number经典 asp 在网络服务器上创建文本文件:错误 800a0034 Bad_file_name_or_number
【发布时间】:2017-07-28 19:42:26
【问题描述】:

我在 VBS 中有一个经典的 asp 页面,我正在尝试使用以下代码在 Web 服务器上创建一个文件。

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 行。

根据 Microsoft 文档,这意味着我正在尝试创建一个文件名无效的文件。然后它解释了文件名的规则,我的似乎是完全有效的。

关于如何进一步解决此问题的任何建议或想法?

【问题讨论】:

  • createtextfile 函数在 Web 服务器上运行,但在本地服务器本身的上下文中。您给它的任何路径都必须解析,就像您登录到服务器上的 Windows 桌面并尝试 CD 到该路径一样。除非你创建了一个

标签: vbscript asp-classic filesystemobject


【解决方案1】:

首先要检查以确保您的用户有权访问该文件夹。假设您没有使用 Windows 身份验证,请确保 IUSR 帐户对该文件夹具有写入权限。

其次,除非将inetpub 设置为文件夹的共享,否则您的语法将不起作用。如果您网站的根目录位于 CS 文件夹中,您可以执行以下操作:

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

【讨论】:

    【解决方案2】:

    createtextfile() 函数在 Web 服务器上运行,但在本地服务器本身的上下文中。简而言之,您给它的任何路径都必须像您登录到服务器上的 Windows 桌面并尝试 CD 到该路径一样解析。

    格式 \localhost... 是一个 UNC 路径。有关 UNC 路径和窗口的讨论,请参阅 this question。除非您确定有一个为 \localhost 映射的 UNC 路径,否则这可能是您的问题。您可能会假设 \localhost 将是一个合理的使用路径,但正如我所说,除非您确定它可用,否则这是一个无效的选择。

    最后,如果您决定为 \localhost 设置共享,您将进入一些围绕 Web 服务器运行的用户上下文的有趣领域。您会看到您必须为 IIS 设置共享被配置为 IIS 的运行身份的用户,因此您需要知道这一点并创建所需的配置以向该用户提供共享。

    如果是我,我会切换到使用标准 Windows 路径,尽管即使那样你也需要了解运行身份用户上下文和安全配置等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多