首页 > 编程语言 > ASP > 关于WIN64位系统IIS使用ASP支持ACCESS数据库的方法

关于WIN64位系统IIS使用ASP支持ACCESS数据库的方法

ASP WEB软件

一.问题情况

由于一个网站使用老旧的32位win2003系统,迁移到新的64位win2016系统后,access数据库无法读取,所以记录一下

二.解决方法

首先打开错误页-编辑功能设置-详细错误,ASP-调试属性-将错误发送到浏览器True,这样就可以看到asp的报错了.显示为:

百度后发现是64位操作系统不支持Microsoft OLE DB Provider for Jet驱动程序,也不支持更早的Microsoft Access Driver (*.mdb)方式连接。按要求打开应用程序池-设置应用程序池默认设置-启用32位应用程序True

正常到这里就可以了,但是由于我的IIS站点有些不需要执行ASP,所以我删除了默认的应用程序映射的ASP脚本映射,然后去对应站点的应用程序映射手动添加了ASP脚本映射

打开32位应用程序后asp访问变成了:

百度后,都是讲怎么注册asp.net的的应用程序池的,其实跟asp.net没啥关系,因为匹配到的是StaticFile模块,其实是ISAPI加载ASP的地方没有匹配到请求.64位IIS在手动处理应用程序映射添加脚本映射asp的时候强制声明了64位应用,只要去掉这个64位程序声明就行,配置可以打开C:\Windows\System32\inetsrv\config\applicationHost.config查看,或者是在站点的web.config里查看(PS:至于IIS如何使用这2个配置文件的我一直没搞懂,站点根目录下web.config好像是实时的,但是applicationHost.config修改保存IIS会根据你的修改实时使用,如果用IIS控制台修改一些设置,在applicationHost.config却查看不到任何变化.)

ASP安装默认添加的ASP脚本支持在applicationHost.config里配置是这样:

手动添加ASP脚本支持

多了一个preCondition="bitness64"就是声明程序是64位的,64位的ASP又不支持Access数据库的读取,就出现上面上面这个404.17的提示了.在配置文件里删除掉preCondition="bitness64"然后保存asp就可以正常使用access数据库读写了.