1

我有一个经典的 ASP 应用程序,我已经从运行 IIS6.0 的 Windows 2003 服务器迁移到运行 IIS7 的 64 位 Windows 2008 R2。在 IIS7 中,我创建了一个网站并向其中添加了一个应用程序,并将应用程序池设置为启用 32 位应用程序。

该应用程序使用 ORAOLEDB 驱动程序连接到 Oracle 数据库 - 我已经安装了 64 位 Oracle 客户端 11.2.0.3 以连接到后端 Oracle 11g 数据库,并且可以通过与使用 SQLPlus 的应用程序相同的用户正常连接。

但是,当我运行该应用程序时,它尝试连接到 Oracle 失败,IIS 日志显示错误:

“找不到提供程序。它可能没有正确安装”

我尝试了各种可能的方法来尝试使其正常工作:

  • 手动注册 OraOLEDB11.dll
  • 从应用程序池中禁用 32 位应用程序
  • 使用 32 位驱动程序,而不是同时启用和禁用 32 位应用程序
  • 完全重新安装驱动程序并尝试以上所有方法

到目前为止没有任何运气。asp代码连接如下:

objOracleConnection.CursorLocation = adUseClient
objOracleConnection.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=MYDATASOURCE;User ID=USER;Password=PASSWORD;PLSQLRSet=1;OLE DB Services=-2;"
objOracleConnection.Open

编辑:我尝试了一个简单的 VBS 脚本(使用与上面基本相同的代码)进行连接,它得到了相同的错误,所以 IIS 可能不是问题。然而,完全相同的脚本也适用于 Windows 2003 机器。

我已经通过“疑难解答兼容性”选项重新安装了 Oracle 客户端,表明该应用程序在 Windows 2003 SP1 下工作,但仍然从 VBS 脚本和 IIS 应用程序中遇到相同的问题 :(

4

1 回答 1

0

这是一个有根据的猜测,但在 IIS7 中启用 32 位应用程序似乎会禁用 64 位应用程序。如果它是 64 位驱动程序,您可能需要在应用程序池中禁用 32 位

于 2013-10-31T16:45:29.130 回答