IIS7创建虚拟目录后,Scripting.FileSystemObject的GetFolder路径识别失败求助
解决IIS7中虚拟目录结合FSO GetFolder的路径识别问题
你这是踩了ASP虚拟目录使用的典型误区,咱们一步步捋清楚解决办法:
问题核心
你当前代码的路径拼接逻辑完全错了:
sPath = "\CMapped\database\attendanceData\" sDir = Server.MapPath(".") & sPath
Server.MapPath(".")返回的是当前ASP文件所在的物理路径(也就是你D盘的站点目录),你把虚拟目录名称CMapped拼在后面,等于让FSO去找D:\你的站点路径\CMapped\database\attendanceData\——但这个路径根本不存在,你的虚拟目录实际指向的是C盘的独立文件夹,和D盘站点没有物理关联。
修复后的代码
直接对虚拟目录的URL路径使用Server.MapPath,就能正确映射到它对应的C盘物理路径:
sDir = Server.MapPath("/CMapped/database/attendanceData/") response.write sDir Set fso = Server.CreateObject("Scripting.FileSystemObject") Set obj_FolderBase = fso.GetFolder(sDir) response.end
小提醒:如果你的ASP文件不在站点根目录,要调整相对路径,比如页面在
/admin/下就用../CMapped/database/attendanceData/,用绝对路径/CMapped/...会更稳妥。
额外权限校验
虽然你已经设置了虚拟目录的“连接为”,但还要确认:
- IIS应用池的运行身份(默认是ApplicationPoolIdentity)对C盘目标文件夹有读取+列出内容的权限
- 检查C盘文件夹的NTFS权限,必要时给应用池身份手动添加权限
你提供的问题相关信息:
报错截图

已执行操作
- 创建虚拟目录指向C盘,设置“连接为”管理员账号并完成授权:

- 将C盘目标文件夹设置为共享:

- IIS中浏览虚拟目录成功:

目录结构

原始代码
sPath = "\CMapped\database\attendanceData\" sDir = Server.MapPath(".") & sPath response.write sDir Set fso = Server.CreateObject("Scripting.FileSystemObject") Set obj_FolderBase = fso.GetFolder(sDir) response.end
内容的提问来源于stack exchange,提问作者Hanz Cheah
相关产品推荐
相关产品推荐

