【问题标题】:oracle empty exception oracle dataaccessoracle 空异常 oracle 数据访问
【发布时间】:2015-03-24 12:04:40
【问题描述】:

我在这方面承受着压力,所以任何帮助都会很棒。这似乎是一个很长的问题,但事实并非如此。我刚刚包含了尽可能多的信息。rgds M

我在 3 个环境(Dev、UAT 和 Prod)上安装了一个带有 Web 服务的 Web 应用程序系统从 SQL 2008 上的 SSIS 包调用 Web 服务,它在所有环境中的 Web 服务上都遇到了 no Problem 方法。然后我尝试在方法中打开一个 oracle 连接,如下面的简单代码中使用 Oracle 程序集:Oracle.DataAccess.Client;

她是示例代码:

  // Create and open a connection.
   OracleConnection mConnection = new OracleConnection(sCnx);
   mConnection.Open();  -- Fails at this call. 

根据此类似问题,异常消息和编号为空白 - Oracle.DataAccess.Client.OracleException at Connection.Open()

但是,我已经检查了 Pass through 设置,并且在所有环境中都将其设置为 true。

这是我的连接字符串

<add name="cnx" connectionString="DATA SOURCE=MYHUP1.US.COM;PASSWORD=456336;PERSIST SECURITY INFO=True;USER ID=MYAPPUSER" providerName="Oracle.DataAccess.Client"/>

这是我在下面使用的 DLL 版本。所有 Dll 都是使用我的应用程序和 bin 文件夹构建和部署的。我还检查了 Oracle.DataAccess.dll 是从 BIN 文件夹而不是 GAC 或从服务器上安装的 Oracle 11(64 位)加载的。

Oracle.DataAccess.dll 版本 2.112.3.0 32 位 这些也包含在 bin oci.dll、ociw32.dll、orannzsbb11.dll、oraocci11.dll、OraOps11w.dll 中

我的应用程序在 64 位机器上运行,但它是一个 32 位应用程序,我在应用程序池中设置了这个。它再次在 DEV 上运行良好,但在 Prod 上运行良好。它还在所有 3 个环境中使用相同的服务帐户运行。

困扰我的是错误消息是空白的,我不得不输入大量代码来检查加载的模块和运行服务的组。这些看起来都很好。

来自异常的错误消息:注意消息是空白的..这是我抽出所有东西时得到的信息

Oracle.DataAccess.Client.OracleException 在 Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode、OracleConnection conn、IntPtr opsErrCtx、OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck) at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src) at Oracle.DataAccess.Client.OracleConnection.Open() 在 XXX.Business.XXXBO.TestConnectionAndDeleteData(Nullable`1 updateDate, Int64 currentUserID) 在 C:\Development\XXX........

在我的开发和生产环境中,我安装了以下版本的 Oracle,但如上所述,我在 Bin 目录中使用我自己的驱动程序,所以我认为这无关紧要..

DEV = Oracle Provider version 11.2.0.1.0

PROD = Oracle Provider Version 11.1.0.6.20

有没有人知道为什么这在我的 Prod 环境中不起作用。我已经精通 IIS,并且与其他环境相比,它们是相同的。只是试图将其归结为 IIS 问题或 Oracle。请注意,我自己无权访问 UAT 环境,这也有帮助!!

最好的问候米克

【问题讨论】:

  • 确实安装了 32 位客户端我们在 2 周前遇到了同样的问题,我们安装了 11.2.x 版本,关于您的连接字符串,您只需要在连接中传递数据源、用户名、密码.net 配置文件中的字符串..
  • 感谢 MethodMan..我将安装 32 位客户端 11.2 并查看是否有所作为。那里的版本是 64 位的,所以我应该升级它还是安装 32 位版本?谢谢米克
  • 并排安装.. 64 位版本在使用标准连接字符串方面不起作用.. 不知道 Oracle 如何让这个错误持续这么长时间而不修复它.. 并排安装就是我们所做的..它将安装到它自己的文件夹中,所以你应该没有问题..当你使用.dll时,只需将副本设置为local = true并删除旧的并重新添加新的.dll..确保您使用导航到 4.x 文件夹而不是 2.x 文件夹..
  • 感谢 Methodman.. 非常感谢。我现在将版本从 11.1g 升级到 11.2。这是一个 64 位安装。所以一旦完成,你认为我也应该在它旁边安装 32 位。嗯不错。唯一我不确定的是我将我的应用程序使用的 Oracle 驱动程序复制到应用程序 Bin 文件夹中,并且我没有使用已安装的驱动程序,因此安装 32 位帮助。仔细检查 MM 并感谢您的帮助... rgds M
  • 嗨 Methodman...我之前遇到过这个问题,因此将 DLL 放在我自己的文件夹中的原因...我知道.. DLL 地狱哈哈。无论如何,我做了你的建议.. 未安装并重新安装,一些配置和它的工作就像一个魅力.. 真的很感激。如果您提供答案,我会立即接受...谢谢一百万..问候米克

标签: c# asp.net .net iis oracle11g


【解决方案1】:

这是你需要做的纠正它。

  • 在 64 位客户端旁边安装 32 位客户端.. 64 位版本在使用标准连接字符串方面不起作用.. 不知道 Oracle 怎么能让这个错误持续这么久而不修复它.. 并排安装一边是我们所做的..它将安装到它自己的文件夹中,所以你应该没有问题..当你使用.dll时,只需将副本设置为local = true并删除旧的并重新添加新的.dll..制作确保您使用导航到 4.x 文件夹而不是 2.x 文件夹。

【讨论】:

  • 很棒的东西 Methodman... 非常感谢所有的帮助。关于 M
  • 没问题.. 我很高兴我在两周前找到了一个可行的解决方案,以及一种绕过TNSNames废话的方法,哈哈
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多