因公司种种业务需要,需要在机房某台Winserver2008R2服务器的IIS7环境下复活一套ASP+Access的老旧信息化系统,考虑到该服务器本身已有一套ASP+MSSQL的系统线上一直运行正常,想必应该很容易搞定,当即就建了一个二级目录,将全套相关文件拷贝了进去,配置了下相关目录权限后运行之,系统一直在反复而坚定地报同一个错误:

错 误 号:-2147467259
错误描述:未指定的错误
错误来源:Microsoft JET Database Engine

依次做了如下排查:

  1. 该ASP网站ACCESS数据库所在目录及有关特别的config目录赋予用户读写及修改权限,甚至在调试期间,一度将整站赋予了everyone完全控制,未果;

  2. 设置启用IIS--ASP的父路径:
    一套老旧ASP+Access的复活记

  3. 设置运行该站点的程序池启用32位应用程序:
    一套老旧ASP+Access的复活记

  4. 权限权限,还是权限问题:
    自不必说:C:\Windows\temp 目录需要IIS_IUSRS完全权限,还有一种说法是:IIS7下的32位MS Jet引擎临时目录位置:C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp 也一并授权处理过了。

后来在一次无意中点击:
一套老旧ASP+Access的复活记

无法验证对web站点本地物理路径的访问?

一套老旧ASP+Access的复活记

立即做了如下设置:
一套老旧ASP+Access的复活记

一套老旧ASP+Access的复活记

至此再去试了一下:ASP+Access已可正常访问,问题完美解决。

小结一下:没有更改上述此项设置之前,为什么之前那套Asp+MSSQL一直运行正常,唯独这套ASP+Access就不行?官方解释如下:

服务器配置为将传递身份验证和内置帐户一起使用,以访问指定的物理路径。但是,IIS 管理器无法验证此内置帐户是否有访问权。请确保应用程序池标识具有该物理路径的读取访问权。如果此服务器加入到域中,并且应用程序池标识是 NetworkService 或 LocalSystem,则验证<domain>\<computer_name>$ 具有该物理路径的读取访问权,然后重新测试这些设置。