因为要连第三方库(access数据库),自然而然的就想到通过ODBC数据源来连接,数据源连接没有问题,但是在数据服
务中访问该数据源时,出现异常“ERROR [HY024] [Microsoft][ODBC Microsoft Access Driver] '(未知的)'不是一个有效
的路径。。。。”,经反复测试,如果ACCESS文件在本机,创建数据源时指向本地文件没有问题;或者在Windows
Application 中调用也没有问题,就是在Web Application 中调用网络驱动器时会出现异常。(创建ACCESS数据源时,如
果指向网络上的ACCESS文件,就会自动映射为网络驱动器。)
分析肯定是与运行时用户权限有关,Windows Application是以当前用户身份来运行,而Web Application 根据IIS版本
的不同,默认可能是以ASPNET或NETWORK SERVICE身份来运行。尝试了设置网络驱动器的安全权限,甚至把EVERYONE的权限
都放开了,还是不行,也尝试过将WEB的App Cache Pool 标识设置为以本地系统身份(Local system),问题依旧。
查阅了很多资料,在ASP.net中访问网络资源可以通过 模拟+委派 配置来实现,详见:
http://support.microsoft.com/kb/810572/zh-cn
但是如果修改配置,不知道对已经在用的数据服务有无其它影响,所以慎重起见,还是放弃了这个配置解决方案。
既然是ACCESS数据库就想到是否可以将数据源建到本地,然后同步远程ACCESS文件到本地。于是就在之前已经在运行中
的一个定时服务(windows 服务)增加了一个任务模块,专门用来同步远程文件到本地。但是测试中,发现如果将远程文件
所在目录映射为网络驱动器,在服务中仍然会出现找不到该文件的异常。还是与权限相关?尝试又将服务登陆帐户设置为
当前的系统管理员,结果问题依旧,又查阅了些资料,最后将网络驱动器路径换成了UNC路径,也就是如://168.1.1.100/jbjl/*.mdb 的路径后,问题消失。
只是目前还不清楚是否有其它解决方案,以及最终的原因。如有清楚的朋友,望不吝赐教!