You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP Classic中FileSystemObject无法访问映射驱动器R:的问题

ASP Classic访问映射驱动器R盘报错的解决办法

你遇到的问题本质上是IIS应用池的运行身份和用户会话级映射驱动器的隔离问题,加上权限配置不到位,下面给你几个针对性的解决方案:

1. 优先改用UNC路径(最可靠的方案)

映射驱动器(比如R:\)是绑定到当前登录用户会话的,而IIS的应用池是用单独的系统账号运行的,它根本看不到你手动映射的R盘。所以直接用共享文件夹的UNC路径替代驱动器字母是最稳妥的:

修改你的代码:

sDir = "\\你的共享服务器名\共享文件夹名\database\attendanceData\" 
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set obj_FolderBase = fso.GetFolder(sDir)
if obj_FolderBase.Files.Count = 0 then
    response.write " No Attendance Data Found!"
    response.End
end if
response.write "IT is working"
response.End

2. 给应用池身份配置共享权限

不管用UNC还是映射驱动器,IIS应用池的运行账号必须拥有访问目标共享文件夹的权限:

  • 打开IIS管理器,找到你的站点对应的应用池,进入「高级设置」查看「标识」(默认可能是ApplicationPoolIdentity或Network Service)。
  • 到共享驱动器所在的服务器上,给这个账号设置:
    • 共享权限:至少授予「读取」权限;
    • NTFS权限:授予「读取」「列出文件夹内容」权限。
  • 如果你的共享是域环境下的,把应用池身份改成有访问权限的域账号会更方便。

3. 非要用映射驱动器的话(不推荐)

如果必须保留R:\这种写法,需要在IIS服务的登录账号下完成映射:

  • 打开「服务」(services.msc),找到IIS Admin Service和World Wide Web Publishing Service,查看它们的登录身份。
  • 用这个身份登录到服务器(本地账号需要控制台登录,域账号可以远程),手动映射R盘并勾选「登录时重新连接」。
  • 重启IIS相关服务,让服务加载这个映射。

另外提个小细节:你的代码里response.write和引号之间最好加个空格,避免输出时出现语法问题(虽然这次报错不是因为这个)。

内容的提问来源于stack exchange,提问作者Hanz Cheah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:00:41