System.Runtime.InteropServices.ExternalException при вызове Oracle.DataAccess.Client.OracleConnection.Open ()

1

У меня есть следующий код для подключения к базе данных с использованием ODP.net:

// connection information removed to protect sensitive information
string host = "******";
string sid = "*****";
string connectDescriptor = string.Format("(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST={0})(PORT=1521))(CONNECT_DATA=(SID={1})))", host, sid);
string username = "*****";
string password = "*****";

string connectionString = string.Format("Data Source={0};User ID={1};Password={2};", connectDescriptor, username, password);
OracleConnection conn = null;

try
{
    conn = new OracleConnection(connectionString);
    conn.Open();
}
catch (OracleException oraex)
{
    MessageBox.Show(oraex.ErrorCode + ": " + oraex.Message);
}
finally
{
    conn.Close();
}

Вызов Open() вызывает ошибку, и я не могу много узнать об этом. oraex.ErrorCode - -2147467259 и oraex.Message is "". Попытка доступа к большинству членов исключенного исключения приводит к исключению NullReferenceException.

Изображение 174551

Кроме того, я вижу, что базовым исключением является System.Runtime.InteropServices.ExternalException.

Изображение 174551

Что здесь происходит? Из-за исключения InteropServices я предполагаю, что это как-то связано с COM.

Дополнительная информация

  • Я только что установил ODAC 12c.
  • Информация о подключении проверяется. Я могу подключиться к одной базе данных с помощью приложения SilverLight, которое использует устаревший System.Data.OracleClient. Они в порядке.
Теги:
odp.net
odac

1 ответ

1
Лучший ответ

Кажется, что-то с клиентом оракула. Я столкнулся с аналогичными проблемами с веб-проектами, в то время как консольные проекты работали нормально. Если вы установили 64-битный ODAC, то полностью удалите его и попробуйте с 32-битным. Также дважды проверьте целевую платформу в Visual Studio на "32 бит". Если это сработает, вы можете выполнить поиск в 64-битной установке.

  • 1
    Это действительно стоит попробовать ... как бы безумно это ни звучало, попробуйте все в 32-битной версии, и вы можете обнаружить, что все работает отлично. У 32-разрядного клиента нет проблем с подключением к 64-разрядному серверу (и наоборот), поэтому, кроме принудительного запуска 32-разрядного приложения, в действительности не должно быть недостатков.
  • 0
    Это также радует, что я заплатил за DevArt dotConnect.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню