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 в будущем.