【发布时间】:2019-04-05 18:02:47
【问题描述】:
我正在尝试使用以下方法连接到 Oracle DB:
OracleConnection con = new OracleConnection();
con.ConnectionString = "User ID=ID;Password=PASSWORD;Data Source=SOURCE";
con.Open();
write("connected to oracle " + con.ServerVersion);
但是每次我运行程序我都会得到错误:
[2018-11-01 09:29:19.705] System.BadImageFormatException: 不能 加载文件或程序集 'Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=PUBLIC_KEY' 或其之一 依赖关系。试图加载一个不正确的程序 格式。文件名:'Oracle.DataAccess,版本=2.112.1.0, 文化=中性,PublicKeyToken=PUBLIC_KEY' 在 adrentech_previous_day.Program.processFile() 在 adrentech_previous_day.Program.Main() 在 目录\程序:行 25
=== 预绑定状态信息 === LOG: DisplayName = Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=PUBLIC_KEY(完全指定)日志:Appbase = 文件:///目录 日志:初始 PrivatePath = NULL 调用程序集: adrentech_previous_day,版本=1.0.0.0,文化=中性, PublicKeyToken=null。 === LOG:此绑定在默认加载上下文中开始。 LOG:使用应用程序配置文件: 目录\program.vshost.exe.Config LOG:使用主机配置文件: LOG:使用机器配置 文件来自 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config。 LOG:后策略参考:Oracle.DataAccess,Version=2.112.1.0, 文化=中性,PublicKeyToken=PUBLIC_KEY 日志:正在尝试 下载新网址 文件:///DIRECTORY/Oracle.DataAccess.DLL。 ERR:无法完成程序集的设置(hr = 0x8007000b)。探测 终止。
有什么建议吗?
【问题讨论】:
-
1) 您可以使用Oracle Managed client,它没有外部依赖项并且不是 X86/64 特定的。 2) 确保将 IDisposable 对象(例如 OracleConnection)包装在 using 语句中。
-
我安装了 Oracle 托管客户端并将 OracleConnection 包装在 using 语句中,但我仍然收到相同的错误。
-
您确定删除了对非托管客户端的引用吗?
-
好的,是的,我刚刚这样做了,现在我收到一个新错误:Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-12154: TNS:could not resolve the connect identifier specified --- > OracleInternal.Network.NetworkException (0x00002F7A): ORA-12154: TNS: 无法解析指定的连接标识符
-
很好,这意味着你走得更远了。我建议你使用这样的连接字符串:
SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID))); uid=myUsername;pwd=myPassword;
标签: c# database oracle oracle11g