1

我正在编写一个在 IIS 7.0 上运行的 ASP 经典(使用 JScript)存储库,并且在移动文件时遇到了一些权限问题。我必须遵循总是给我一个权限被拒绝错误的通用函数。

function moveFile(source, target){
    fs = new ActiveXObject("Scripting.FileSystemObject");
    newloc = target + "\\" + source.name;
    debug("Copying file: " + source.path + " to " + newloc);
    fs.copyFile(source.path, Server.MapPath( "repository/" ), true);

}

当我使用源和目标调用函数时source.path,我得到以下输出:D:\Inetpub_EXT\wwwroot\builder\repo\dump\alicia.docxD:\Inetpub_EXT\wwwroot\builder\repo\repository

Treating dumpfile: alicia
Copying file: D:\Inetpub_EXT\builder\repo\dump\alicia.docx to 
D:\Inetpub_EXT\wwwroot\builder\repo\repository
Microsoft JScript runtime error '800a0046'
Permission denied 

我已经验证了文件夹和文件都存在,并且我在构建器中完全控制了 IIS_WPG、IUSR、Authenticated User、System 和 Administrators。

谢谢你的帮助。

4

1 回答 1

1

仔细检查您的权限。小心假设。

例如,您可能假设如果 IIS 用户对builder目录具有权限,那么它对所有子目录都具有权限。这不是一个好的假设。如果您在builder目录上设置 ACL 以授予 IIS 权限,则在创建子目录后,这些子目录将不会自动继承您稍后应用到的权限builder

您可以从命令行使用 icacls.exe 来查看权限:

 %windir\system32\icacls.exe  d:\inetpub\wwwroot\builder\foo\bar 
于 2012-06-15T03:08:10.140 回答