System.Data.OracleClient требует клиентского программного обеспечения Oracle версии 8.1.7
У меня есть веб-сайт, который я разработал на Vista, используя Vb.net9. Это делает соединение с Oracle. для подключения я использую System.Data.OracleClient. Он отлично работает на моей машине и нашем тестовом сервере, но не работает на рабочем сервере. Мы установили Oracle Client 11 на сервере. Ошибка System.Data.OracleClient требует клиентского программного обеспечения Oracle версии 8.1.7
Мы попытались создать консольное приложение, которое открывает соединение, соединение работает нормально, открывается, отображает сообщение и все хорошо.
Затем мы создаем простую веб-форму, помещаем ее в каталог программы, просто нажимаем кнопку, открываем соединение, пытаемся... поймать, захватывает ошибку, та же ошибка.
Консольное приложение работало под Администратором, веб-сайт работал под iwam. Возможно ли, что у iwam другой путь?
7 ответов
Я сталкивался с этой ошибкой десятки раз:
причина
Разрешения безопасности не были правильно установлены, когда клиент Oracle был установлен в Windows с NTFS. Результатом этого является то, что содержимое каталога ORACLE_HOME не отображается для аутентифицированных пользователей на компьютере; это вызывает ошибку, когда System.Data.OracleClient обменивается данными с программным обеспечением Oracle Connectivity из ASP.NET с использованием привилегий аутентифицированного пользователя.
Решение
Чтобы устранить эту проблему, вы должны предоставить привилегии группы "Прошедшие проверку" для домашнего каталога Oracle.
- Войдите в Windows как пользователь с правами администратора.
- Запустите Window Explorer и перейдите в папку ORACLE_HOME.
- Выберите свойства в папке ORACLE_HOME.
- Нажмите вкладку "Безопасность" окна "Свойства".
- Нажмите на пункт "Аутентифицированные пользователи" в списке "Имя".
- Снимите флажок "Чтение и выполнение" в списке "Разрешения" в столбце "Разрешить".
- Установите флажок "Читать и выполнить" в столбце "Разрешить".
- Нажмите кнопку "Дополнительно" и в разделе "Записи разрешений" убедитесь, что в списке "Аутентифицированные пользователи" указаны права доступа = "Чтение и выполнение" и Применить к = "Эта папка, подпапки и файлы". Если нет, отредактируйте эту строку и убедитесь, что в раскрывающемся списке "Применить к" установлено "Эта папка, подпапки и файлы". Это уже должно быть установлено правильно, но важно, чтобы вы это проверили.
- Нажимайте кнопку "ОК", пока не закроете все окна свойств безопасности. Курсор может отображать песочные часы в течение нескольких секунд, поскольку он применяет только что измененные вами разрешения ко всем подпапкам и файлам.
- Перезагрузите компьютер, чтобы изменения вступили в силу.
Попробуйте ваше приложение еще раз.
Автор этого поста (сейчас удаленный пост) предлагает проверить ваш C:\Windows\System32
папка, чтобы убедиться, что oci.dll
существует там. Копирование файла из домашнего каталога Oracle решило эту проблему для меня.
Обновление 1. Разные пользователи могут иметь разные пути. Но это не вероятная проблема здесь. Вероятность того, что пользователь iwam не имеет разрешения на доступ к каталогу клиента oracle, выше.
Обновление 0: его предполагается работать. Проверьте наличие переменной среды (которая необходима для поиска клиента oracle и tnsnames.ora). Также, возможно, у вас проблемы с 32/64 битами. Также рассмотрите возможность использования провайдера данных Oracle для.NET (поиск odp.net).
Клиент Oracle версии 11 не может подключиться к базам данных 8i. Вам потребуется клиент в версии 10 максимум.
Почему бы не использовать это: dotConnect для Oracle (ранее известный как OraDirect .NET)?
Его можно настроить так, чтобы он вообще не требовал клиента Oracle.
Мы использовали это как в Windows Services, так и в ASP.NET Web Services, и это работает как шарм.
Когда мы впервые перешли на Vista с Oracle 10g, мы столкнулись с этой проблемой, когда устанавливали клиент Oracle на наших компьютерах Vista, даже когда мы работали с правами администратора во время установки.
Oracle выпустила новую версию клиента 10g (10.2.0.3), совместимую с Vista.
Я верю, что это было после выпуска 11g, так что возможно, что есть версия "совместимая с Vista" и для 11g.
Для меня проблема была в том, что какой-то плагин в моей Visual Studio начал переводить мое приложение в 64-битный режим x64, поэтому драйвер Oracle не был найден, так как у меня был установлен Oracle 32bit.
Поэтому, если у вас возникла эта проблема, попробуйте запустить Visual Studio в безопасном режиме (devenv /safemode). Я мог найти, что он искал в SYSWOW64 файл ic.dll, используя приложение ProcMon от SysInternals/Microsoft.
Обновление: для меня это был продукт Telerik JustTrace, который вызывал проблему, вероятно, он подключался и влиял на версию во время выполнения, чтобы каким-либо образом выполнить трассировку.
Обновление 2: проблема возникает не только в JustTrace, но и в JustMock. JustMock проще исправить: нажмите JustMock-> Disable Profiler, и драйвер оракула моего веб-приложения будет работать в правильном режиме CPU. Это может быть исправлено Telerik в будущем.