今天帮人解决一个老的asp的网站,弄了半天。
原来的机器上没问题,换一台机器后一直有问题,原来的代码中也没有什么日志处理,也没什么报错,这些东西在编码时还是很有必要的。
asp很长时间没弄,都快忘了,只能一步步的加调试信息,最后在连接的后面加了一个调试才找到真正的错误原因:
conn.open connstr
If Err <> 0 Then
Response.Write " 11111<br><br><b> " & Err.Description & " </b> "
End If
end if
If Err <> 0 Then
Response.Write " 11111<br><br><b> " & Err.Description & " </b> "
End If
end if
提示错误:未指定提供程序,也没有指派的默认提供程序
百度了半天,终于发现是64位系统的问题,因为新的机器装的是64位的机器
这是由于你的系统是64位的,而64位操作系统不支持Microsoft OLE DB Provider
for
Jet驱动程序,也不支持更早的Microsoft Access Driver (
*
.mdb)方式连接。
Microsoft网站有如下说明:(见:http: // msdn2.microsoft.com/zh-cn/library/ms141766.aspx)
用于 Access 和 Excel 数据库的 Microsoft OLE DB Provider for Jet 在 64 位版本中不可用。
也就是说,如下两种连接字符串都已经无法正常工作了:
“Provider = Microsoft.Jet.OLEDB. 4.0 ;Data Source = " &Server.mappath(db)
" driver=Microsoft Access Driver (*.mdb);DBQ= " & Server.MapPath(db)
因此,我们不得不修改IIS运行环境为32位
另,SQL数据连接则可以在64位机上运行,链接字符串为:
" PROVIDER=SQLOLEDB;DATA SOURCE= " & SqlLocalName & " ;UID= " & SqlUsername & " ;PWD= " & SqlPassword & " ;DATABASE= " & SqlDatabaseName
将IIS修改为32位的方法如下:
Microsoft网站有如下说明:(见:http: // msdn2.microsoft.com/zh-cn/library/ms141766.aspx)
用于 Access 和 Excel 数据库的 Microsoft OLE DB Provider for Jet 在 64 位版本中不可用。
也就是说,如下两种连接字符串都已经无法正常工作了:
“Provider = Microsoft.Jet.OLEDB. 4.0 ;Data Source = " &Server.mappath(db)
" driver=Microsoft Access Driver (*.mdb);DBQ= " & Server.MapPath(db)
因此,我们不得不修改IIS运行环境为32位
另,SQL数据连接则可以在64位机上运行,链接字符串为:
" PROVIDER=SQLOLEDB;DATA SOURCE= " & SqlLocalName & " ;UID= " & SqlUsername & " ;PWD= " & SqlPassword & " ;DATABASE= " & SqlDatabaseName
ASP.NET
2.0
,
32
位版本
要运行 32 位版本的 ASP.NET 2.0 ,请按照以下步骤操作:
1 . 单击“开始”,单击“运行”,键入 cmd,然后单击“确定”。
2 . 键入以下命令启用 32 位模式:
cscript % SYSTEMDRIVE % \inetpub\adminscripts\adsutil.vbs SET W3SVC / AppPools / Enable32bitAppOnWin64 1
3 . 键入以下命令,安装 ASP.NET 2.0 ( 32 位)版本并在 IIS 根目录下安装脚本映射:
% SYSTEMROOT % \Microsoft.NET\Framework\v2. 0.50727 \aspnet_regiis.exe - i
4 . 确保在 Internet 信息服务管理器的 Web 服务扩展列表中,将 ASP.NET 版本 2.0 . 40607 ( 32 位)的状态设置为允许。
ASP.NET 2.0 , 64 位版本
要运行 64 位版本的 ASP.NET 2.0 ,请按照以下步骤操作:
1 . 单击“开始”,单击“运行”,键入 cmd,然后单击“确定”。
2 . 键入以下命令禁用 32 位模式:
cscript % SYSTEMDRIVE % \inetpub\adminscripts\adsutil.vbs SET W3SVC / AppPools / Enable32bitAppOnWin64 0
3 . 键入以下命令,安装 ASP.NET 2.0 版本并在 IIS 根目录下安装脚本映射:
% SYSTEMROOT % \Microsoft.NET\Framework64\v2. 0.50727 \aspnet_regiis.exe - i
4 . 确保在 Internet 信息服务管理器的 Web 服务扩展列表中,将 ASP.NET 版本 2.0 . 40607 的状态设置为允许。
注意:ASP.NET 2.0 的内部版本可能随当前发行的内部版本的变化而变化。这些步骤适用于内部版本 2.0 . 40607 。
要运行 32 位版本的 ASP.NET 2.0 ,请按照以下步骤操作:
1 . 单击“开始”,单击“运行”,键入 cmd,然后单击“确定”。
2 . 键入以下命令启用 32 位模式:
cscript % SYSTEMDRIVE % \inetpub\adminscripts\adsutil.vbs SET W3SVC / AppPools / Enable32bitAppOnWin64 1
3 . 键入以下命令,安装 ASP.NET 2.0 ( 32 位)版本并在 IIS 根目录下安装脚本映射:
% SYSTEMROOT % \Microsoft.NET\Framework\v2. 0.50727 \aspnet_regiis.exe - i
4 . 确保在 Internet 信息服务管理器的 Web 服务扩展列表中,将 ASP.NET 版本 2.0 . 40607 ( 32 位)的状态设置为允许。
ASP.NET 2.0 , 64 位版本
要运行 64 位版本的 ASP.NET 2.0 ,请按照以下步骤操作:
1 . 单击“开始”,单击“运行”,键入 cmd,然后单击“确定”。
2 . 键入以下命令禁用 32 位模式:
cscript % SYSTEMDRIVE % \inetpub\adminscripts\adsutil.vbs SET W3SVC / AppPools / Enable32bitAppOnWin64 0
3 . 键入以下命令,安装 ASP.NET 2.0 版本并在 IIS 根目录下安装脚本映射:
% SYSTEMROOT % \Microsoft.NET\Framework64\v2. 0.50727 \aspnet_regiis.exe - i
4 . 确保在 Internet 信息服务管理器的 Web 服务扩展列表中,将 ASP.NET 版本 2.0 . 40607 的状态设置为允许。
注意:ASP.NET 2.0 的内部版本可能随当前发行的内部版本的变化而变化。这些步骤适用于内部版本 2.0 . 40607 。