我在我的C#应用程序中使用ODP.NET, Managed Driver Beta(Oracle.ManagedDataAccess.dll)来访问Oracle数据库。这是为了替换使用ODP.NET的本机版本以删除Oracle Client 10g / 11g / etc上的所有本地依赖项。这样就不必在本地安装了。这是我找到的解决方案here。
这是我的C#代码:
new OracleConnection("Data Source=ABCDEFG1;User Id=myuserid;Password=mypassword;").Open();
到达此行并成功创建OracleConnection
对象,从而建议成功加载所有依赖项。但是,它会在调用Open()
时抛出 OracleException 。错误消息是:
网络传输:无法解析连接主机名
我的组织使用LDAP执行主机名查找,这是通过使用DIRECTORY_SERVER设置的ORA文件完成的。但是,使用托管版本的ODP.NET,我很难做到这一点。 ORA文件存储在C:\ Apps \ oracle \ network \ admin。
中tnsping我的数据源('ABCDEFG1')工作正常。所以,我使用了tnsping的输出,并使用此输出在tnsnames.ora中为ABCDEFG1添加了一个条目。然后我的应用程序成功连接所以,我知道它肯定是在查找和使用ORA文件,但由于某些原因,它不会执行非托管ODP.NET(在其他应用程序中)使用的LDAP查找。
是否有人使用这个新的托管ODP.NET意识到这个问题或我可能做错了什么?
答案 0 :(得分:2)
我问同一个question on the Oracle forums,有人想出answer。管理的ODP.NET似乎不支持LDAP,而且它位于release notes。
我确实有一个further question来自此,如果有人可以通过回答那个来帮助我,我会很高兴。
非常感谢。