使用copyFile在IIS上使用ASP Classic的权限错误

时间:2012-06-14 19:24:49

标签: file asp-classic jscript

我正在使用在IIS 7.0上运行的ASP classic(使用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.pathD:\Inetpub_EXT\wwwroot\builder\repo\dump\alicia.docx且目标为D:\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。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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

 %windir\system32\icacls.exe  d:\inetpub\wwwroot\builder\foo\bar