System.Data.OracleClient требует клиентского программного обеспечения Oracle версии 8.1.7

У меня есть веб-сайт, который я разработал в Vista с помощью Vb.net9. Он устанавливает связь с Oracle. для подключения я использую System.Data.OracleClient. Он отлично работает на моей машине и нашем тестовом сервере, но не работает на производственном сервере. Мы установили Oracle Client 11 на сервер. Ошибка - System.Data.OracleClient требует клиентского программного обеспечения Oracle версии 8.1.7.

Мы попытались создать консольное приложение, открывающее соединение, соединение работает нормально, открывается, отображает сообщение, и все хорошо там.

Затем мы создаем простую веб-форму, помещаем ее в директорию программы, просто кнопку, открываем соединение, пытаемся .catch, хватает ошибку и ту же ошибку.

Консольное приложение запускалось под администратором, веб-сайтом, работающим под iwam. Возможно ли, что iwam имеет другой путь?

Ответ 1

Я сталкивался с этой ошибкой десятки раз:

Причина

Разрешения безопасности не были правильно установлены, когда клиент Oracle был установлен в Windows с NTFS. Результатом этого является то, что содержимое каталога ORACLE_HOME невидимо для аутентифицированных пользователей на машине; это вызывает ошибку, когда System.Data.OracleClient обменивается данными с программным обеспечением Oracle Connectivity из ASP.NET с использованием привилегий аутентифицированного пользователя.

Решение

Чтобы устранить эту проблему, вы должны предоставить привилегии группы "Прошедшие проверку" для домашнего каталога Oracle.

  • Войдите в Windows как пользователь с правами Administrator администратора.
  • Запустите проводник Windows и перейдите в папку ORACLE_HOME.
  • Выберите свойства в папке ORACLE_HOME.
  • Откройте вкладку "Безопасность" окна "Свойства".
  • Нажмите на пункт "Аутентифицированные пользователи" в списке "Имя".
  • Снимите флажок "Чтение и выполнение" в списке "Разрешения" в столбце "Разрешить".
  • Установите флажок "Читать и выполнить" в столбце "Разрешить".
  • Нажмите кнопку "Дополнительно" и в разделе "Разрешения" убедитесь, что аутентифицированные пользователи перечислены с разрешением: "Читать и amp"; Выполнить и применить к: эта папка, подпапки и файлы. Если нет, отредактируйте эту строку и убедитесь, что в раскрывающемся списке "Применить к" выбрано "Эта папка, подпапки и файлы". Это уже должно быть установлено правильно, но важно, чтобы вы это проверили.
  • Нажимайте кнопку "ОК", пока не закроете все окна свойств безопасности. Курсор может отображать песочные часы в течение нескольких секунд, поскольку он применяет только что измененные вами разрешения ко всем подпапкам и файлам.
  • Перезагрузите компьютер, чтобы изменения вступили в силу.

Попробуйте ваше приложение еще раз.

Ответ 2

Автор этой публикации (теперь удаленная запись) предлагает проверить вашу папку C:\Windows\System32, чтобы убедиться, что существует oci.dll. Копирование в файл из домашнего каталога Oracle решило эту проблему для меня.

Ответ 3

Обновление 1:. У разных пользователей может быть другой путь. Но это не проблема. Существует больше шансов, что пользователь, которому пользователь iwam не имеет разрешения на каталог клиента oracle.

Обновить 0: Предположим, что он работает. Проверьте переменную окружения (это необходимо для поиска клиента oracle и tnsnames.ora). Кроме того, возможно, у вас проблемы с 32/64 бит. Также рассмотрите возможность использования Oracle Data Provider для .NET(поиск для odp.net)

Ответ 4

Клиент Oracle версии 11 не может подключаться к базам данных 8i. Вам понадобится клиент в версии 10 максимум.

Ответ 5

Когда мы впервые перешли на Vista с Oracle 10g, мы столкнулись с этой проблемой, когда мы установили клиент Oracle в наши окна Vista, даже когда мы запускали с правами администратора во время установки.

Oracle выпустила новую версию клиента 10g (10.2.0.3), совместимую с Vista.

Я действительно верю, что это было после выхода 11g, поэтому вполне возможно, что для версии 11g также существует версия с поддержкой Vista.

Ответ 6

Почему бы не использовать это: dotConnect для Oracle (ранее известный как OraDirect.NET)?

Он может быть настроен так, чтобы вообще не требовать клиента Oracle.

Мы использовали это как в службах Windows, так и в веб-службах ASP.NET, и это работает как прелесть.

Ответ 7

Для меня проблема была в том, что в моем Visual Studio был запущен плагин, который заставлял мое приложение работать в 64-битном режиме 6464, поэтому драйвер Oracle не был найден, поскольку у меня установлен Oracle 32bit.

Итак, если у вас возникла эта проблема, попробуйте запустить Visual Studio в safemode (devenv/safemode). Я мог найти, что он смотрел в SYSWOW64 для файла ic.dll с помощью приложения ProcMon от SysInternals/Microsoft.

Обновление. Для меня это был продукт Telerik JustTrace, который вызывал проблему, вероятно, он подключался и влиял на версию выполнения как-то на трассировку.

Update2: Не только JustTrace вызывает проблему, JustMock вызывает проблему с одним и тем же процессором. JustMock легче исправить: нажмите JustMock- > Disable Profiler, а затем мой драйвер oracle для веб-приложений работает в правильном режиме процессора. Это может быть исправлено Telerik в будущем.