IIS7配置ASP+Access运行500错误
系统为 Windows7 x64 旗舰版,在 IIS7 中配置 ASP+Access 时,运行出现500错误,详细为 ADODB.Connection 错误 '800a0e7a',出错的代码如下:
conn.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(P_rootpath&"sitedata/mdb#ff ok888@fufuok.com.asp")
暗笑,这么平常的ASP网站居然在IIS7下会运行不了?ASP连接Access数据库出错?搜了好久,在 iis.net 论坛上找到答案。
产生的原因是:
在64位系统中,IIS7应用程序池默认没有启用32位程序,也就是说如果你使用的是64位操作系统,而没有64位的Jet 4.0驱动程序,那么就要在IIS7中启用32位程序。
解决方法如下:
If you are running a 64-bit OS, there is no 64-bit Jet 4.0 driver. You need to configure your application pool to run 32-bit.
I struggled with this error for a couple hours before I found this:
http://brh.numbera.com/blog/index.php/2007/03/27/using-myodbc-with-aspnet-in-iis7-on-vista-x64
操作方法如下:
IIS信息管理器 - ‘查看应用程序池’ - 右边操作中选择‘设置应用程序池默认设置..’,在‘常规’中设置‘启用 32 位程序’为True。如下图。
回顾一下解决的过程,以及在Windows 7中配置IIS7的ASP环境时要注意的一些地方。
首先,网站代码肯定没有问题,在虚拟主机和 Windows 2003 本地服务器运行一直很好。我是直接把默认的站点主目录给指向这个网站来测试环境,打开浏览器访问,出现错误‘HTTP 错误 403.14 - Forbidden’,提示没有默认主页。
在‘默认文档’中添加‘index.asp’,再访问,出现500错误。
第一反应是没有启用父目录,先看看再说,IIS管理器 - 双击ASP打开属性 - 在行为设置中将‘启用父路径’设置为True。
刷新浏览,错误依旧。
把错误提示打开来看看究竟是什么错误,打开控制面板 - Internet选项 - 高级 - 设置去掉勾选‘显示友好 http 错误信息’,确定,刷新网站访问,出现错误:
An error occurred on the server when processing the URL. Please contact the system administrator.
If you are the system administrator please click here to find out more about this error.
IIS7选项还真多,挺人性化的,调试继续,IIS管理器 - 双击ASP打开属性 - 在调试属性中设置‘将错误发送到浏览器’为True,下面还可以设置默认的错误提示信息。
刷新浏览器,出现错误提示:
ADODB.Connection 错误 '800a0e7a'
未找到提供程序。该程序可能未正确安装。
/conn.asp,行 5
行 5 就是上面conn.open语句,小小汗了一下,当搜索到答案时,发现别人在2007年就发表解决方法的文章,我囧了~~
再囧~~Windows 7自带的是IIS7.5。