我尝试升级我的C#项目以使用最新的ODAC 12c版本,我为此下载了ODAC 12.1 xcopy for Windows。安装很好,但是当我尝试执行单元测试时,问题就出现了。
我的测试用例在connection.Open()
失败。样本如下:
OracleConnection con = new OracleConnection();
con.ConnectionString = @"User Id = test, Password = test; Data Source = test";
con.Open();
不幸的是,没有异常消息,Stack Trace也没有多大帮助:
结果StackTrace:
at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck, Int32 isRecoverable)
at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
at Oracle.DataAccess.Client.OracleConnection.Open()
at MyProgram.Program.GetDetails()
当我尝试调试时,在执行开始时弹出一个错误消息框,说明:动态链接库oraons.dll 中找不到过程ons_init_wconfig_ctx点的条目。
我想知道是否有遗漏的东西。
Oracle DB版本:11.2.0.3.0 Oracle客户端版本:11.2.0.3.0 ODAC版本:12.1.0.1.2
答案 0 :(得分:1)
我遇到了同样的问题“使用我们的桌面应用程序在动态链接库oraons.dll中找不到过程ons_init_wconfig_ctx点。”
花了很多天后终于找到了解决方案来开展工作。步骤如下:
答案 1 :(得分:0)
如果这是非托管客户端,请尝试设置dllpath:
<configuration>
<oracle.dataaccess.client>
<add key="DllPath" value="C:\<your_xcopy_dir>\bin"/>
</oracle.dataaccess.client>
</configuration>
你可能正在从以前的oracle家中获取非托管dll。通常我会期望“无法加载程序集”消息,但可能情况已经改变了12.如果确实解决了这个问题,并且您已经厌倦了处理“oracle homes”,那么请考虑使用新的Oracle.ManagedDataAccess.dll。
无论如何,我不希望这是客户端/服务器兼容性问题。