【发布时间】:2016-10-09 04:45:10
【问题描述】:
我有一个在 Visual Studio 2012 (C#) 中开发的带有 Oracle (4.121.1.0) 连接的 ASP.NET (4.0) 应用程序。使用了连接字符串,因此我们不查看 TNS。
应用程序在我的开发服务器 (Windows 2008 R2 SP1) 上调试时运行没有问题,我在该服务器上安装了 Oracle DataAccess 组件。
我可以将项目发布到我的生产服务器 (Windows 2008 R2),运行 IIS,但必须将以下 dll 放入应用程序的 bin 文件夹中。
- oci.dll
- Oracle.DataAccess.dll(随应用程序发布)
- orannzsbb12.dll
- oraocci12.dll
- oraociei12.dll
- oraons.dll
- OraOps12.dll
我使用 4.0 集成为此应用创建了一个应用程序池,并将“启用 32 位应用程序”设置为 true。
oracle连接在此环境下运行成功。
但是现在,当我将完全相同的代码发布到我的测试服务器(Windows 2008 R2 SP1),并将相同的 dll 复制到 bin 文件夹并设置与我的生产环境相同的应用程序池时,我得到:
提供者与Oracle客户端版本不兼容
这是在 TEST 服务器上出错的代码行:
oracleConnection = new OracleConnection();
我已经验证了 PROD 和 TEST 服务器之间的一切都是相同的,但是 TEST 服务器毫无例外地给了我这个错误,并且 PROD 服务器运行正常。
PROD 和 TEST 服务器都没有安装 Oracle DataAccess 组件。
关于检查什么有什么建议吗?
谢谢。
【问题讨论】:
-
您可以使用Oracle's managed driver 为自己节省大量时间和麻烦。它没有任何外部依赖项,也不是特定于架构的。
-
在我看来,您在出现错误的机器上的 GAC 中安装了 Oracle,并且它与您在 BIN 中的版本不同。由于 Oracle 使用 TNSNames 进行连接,因此您必须在该服务器上安装不同的版本。应该不需要在 BIN 中移动那些 DLL。我用的是同一个版本,只用GAC
标签: c# asp.net .net oracle dll