Я использую ODP.NET, бета-версию управляемого драйвера ( Oracle.ManagedDataAccess.dll) в моем приложении C# для доступа к базе данных Oracle. Это заменяет использование собственной версии ODP.NET, чтобы удалить все локальные зависимости от Oracle Client 10g/11g/etc. так что это не нужно устанавливать локально. Это решение я нашел здесь.
Это мой код С#:
new OracleConnection("Data Source=ABCDEFG1;User Id=myuserid;Password=mypassword;").Open();
Эта строка достигнута, и объект OracleConnection
успешно создан, что говорит о том, что все зависимости успешно загружены. Однако он выдает OracleException при вызове Open()
. Сообщение об ошибке:
Сетевой транспорт: невозможно разрешить имя хоста для подключения
Моя организация выполняет поиск имени хоста с помощью LDAP, и это делается с помощью файлов ORA с использованием параметра DIRECTORY_SERVER. Однако мне трудно заставить это сделать это с помощью управляемой версии ODP.NET. Файлы ORA хранятся в C:\Apps\oracle\network\admin.
tnsping для моего источника данных («ABCDEFG1») работает нормально. Итак, я использовал вывод tnsping и добавил запись для ABCDEFG1 в tnsnames.ora, используя этот вывод. Затем мое приложение успешно подключилось. Итак, я знаю, что он определенно находит и использует файлы ORA, но по какой-то причине он не будет выполнять поиск LDAP, который использует неуправляемый ODP.NET (в других приложениях).
Кто-нибудь, кто использовал этот новый управляемый ODP.NET, знает об этой проблеме или о том, что я могу делать неправильно?