关于ASP连接access数据库报错的问题(错误代码3706)总结

要想会检测网站篡改首先要学会网络篡改,要想学会网络篡改首先要会搭建网络

就我这半吊子建站水平……学一学嘛

虚拟机中的环境:

windows server 2016 x64

Access2010

 

按照教程搭建好了IIS服务器,在网上找了一个asp/access的网站源码,在iis服务器中建立了网站添加网站根目录,按照网站要求赋予根目录IUSR权限,赋予data等文件夹写入权限,赋予网站根目录Everyone读取权限。

访问本地运行测试一下,出现报错

数据库连接出错,请检查数据库连接文件中的数据库参数设置

 这是单独一个空白页面根据response.write命令直接写出来的,通过翻阅博客了解到大部分asp网站连接数据库的配置信息写在了“Conn.asp”文件中,打开网站的该文件,发现有两处报错返回都是“数据库连接出错,请检查数据库连接文件中的数据库参数设置”,在第一处上随便加了几个字母,再次运行后发现显示的是修改后的报错信息,所以错误出在前面的if语句上。

起初我以为是数据库连接出了问题,因为在某博文中博主这样说:

我们看到了,代码几乎一样,就是接口不一样,分别是:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎)。

Jet 引擎可以访问 Access 97-2003,但不能访问 Access 2007。

ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Access 2007,也可以访问 Access 97-2003。

原文链接:https://blog.csdn.net/weixin_42412949/article/details/80616863

我以为是前后版本的接口不同,又做了深入了解

通过了解博文,我将原来的

conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)

换成了

conn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source="&Server.MapPath("Data/Test.accdb")&";Persist Security Info=False"

错误还是没有解决。

我又发现他是根据Err这个错误信息做出的if选择,我把它的内容通过response.write命令显示出来,发现是错误代码3706

 通过一番查找,在某篇百度经验中了解到了问题的根源:

在win7/win8 64位的系统中没有启用IIS需要的32位程序。或者这样说,当用户使用了WINDOWS 64位操作系统,却没有对应的64位Jet 4.0驱动程序,那么就必须要在IIS中启用32位应用程序。否则打开网站.ASP网页文件时就会出现“错误号:3706 错误描述:未找到提供程序。该程序可能未正确安装”的提示。 

解决方法:

IIS信息管理器 – ‘查看应用程序池’ – 右边操作中选择‘设置应用程序池默认设置..’,在‘常规’中设置‘启用 32 位程序’为True。

关于ASP连接access数据库报错的问题(错误代码3706)总结_第1张图片

问题解决

你可能感兴趣的:(网络攻防)