我在我的 C# 应用程序中使用ODP.NET、托管驱动程序 Beta (Oracle.ManagedDataAccess.dll) 来访问 Oracle 数据库。这是为了替换使用 ODP.NET 的本机版本,以删除对 Oracle 客户端 10g/11g/等的所有本地依赖项。这样就不必在本地安装。这是我在这里找到的解决方案。
这是我的 C# 代码:
new OracleConnection("Data Source=ABCDEFG1;User Id=myuserid;Password=mypassword;").Open();
到达此行并OracleConnection
成功创建对象,从而表明所有依赖项均已成功加载。但是,它会在调用Open()
. 错误信息是:
网络传输:无法解析连接主机名
我的组织使用 LDAP 执行主机名查找,这是通过 ORA 文件使用 DIRECTORY_SERVER 设置完成的。但是,我很难让它使用 ODP.NET 的托管版本来执行此操作。ORA 文件存储在 C:\Apps\oracle\network\admin 中。
tnsping 我的数据源('ABCDEFG1')工作正常。因此,我使用了 tnsping 的输出,并使用此输出在 tnsnames.ora 中为 ABCDEFG1 添加了一个条目。然后我的应用程序连接成功。所以,我知道它肯定是在查找和使用 ORA 文件,但是由于某种原因,它不会执行非托管 ODP.NET(在其他应用程序中)使用的 LDAP 查找。
使用这个新的托管 ODP.NET 的人是否知道这个问题或我可能做错了什么?