【问题标题】:Oracle connection works on one server but not anotherOracle 连接可在一台服务器上工作,但不能在另一台服务器上工作
【发布时间】: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


【解决方案1】:

根据 Mason 的建议,我转换为解决问题的 Oracle 托管数据访问驱动程序。如此简单并解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多