我在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文档,这意味着我正在尝试创建文件名无效的文件。然后它解释了文件名的规则,我的看起来完全有效。
有关如何进一步解决此问题的任何建议或想法?
答案 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用户上下文和安全配置等。