经典的asp在webserver上创建文本文件:错误800a0034 Bad_file_name_or_number

时间:2017-07-28 19:42:27

标签: vbscript asp-classic filesystemobject

我在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文档,这意味着我正在尝试创建文件名无效的文件。然后它解释了文件名的规则,我的看起来完全有效。

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

2 个答案:

答案 0 :(得分:1)

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

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

// Don't set this too high, or NavMesh.SamplePosition() may slow down
float onMeshThreshold = 3;

public bool IsAgentOnNavMesh(GameObject agentObject)
{
    Vector3 agentPosition = agentObject.transform.position;
    NavMeshHit hit;

    // Check for nearest point on navmesh to agent, within onMeshThreshold
    if (NavMesh.SamplePosition(agentPosition, out hit, onMeshThreshold, NavMesh.AllAreas))
    {
        // Check if the positions are vertically aligned
        if (Mathf.Approximately(agentPosition.x, hit.position.x)
            && Mathf.Approximately(agentPosition.z, hit.position.z))
        {
            // Lastly, check if object is below navmesh
            return agentPosition.y >= hit.position.y;
        }
    }

    return false;
}

答案 1 :(得分:0)

createtextfile()函数在Web服务器上运行,但在本地服务器本身的上下文中运行。简而言之,您提供的任何路径必须解决,就好像您已登录到服务器上的Windows桌面并尝试CD到该路径。

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

最后,如果您决定为\ localhost设置共享,您将进入Web服务器运行的用户上下文周围的一些有趣区域。您将看到必须为IIS设置共享配置为IIS的run-as标识的用户,因此您需要知道并创建所需的配置以为该用户提供共享。

如果是我,我会切换到使用标准的Windows路径,尽管那时你需要欣赏run-as用户上下文和安全配置等。