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

39

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

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

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

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

Теги:

7 ответов

57

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

Причина

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

Решение

Чтобы устранить проблему, вы должны предоставить привилегию группы Authenticated Users в каталоге Oracle Home.

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

Повторите попытку.

  • 0
    Я слышал этот загадочный трюк раньше. Трудно поверить, что это работает, но это работает.
  • 0
    У нас был такой вариант - пользователь, на котором работали службы SS Reporting Services, не входил в состав «Прошедших проверку», поэтому нам просто нужно было убедиться, что конкретный пользователь имел доступ к нужным папкам. Но в целом, это была хорошая, полезная информация!
Показать ещё 7 комментариев
4

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

  • 0
    Похоже, что ссылка больше не годится.
2

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

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

1

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

0

Для меня проблема была в том, что в моем 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 в будущем.

0

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

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

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

0

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

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

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

Ещё вопросы

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