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

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

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

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

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

Ответы [ 7 ]

56 голосов
/ 12 мая 2009

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

Причина

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

Решение

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

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

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

4 голосов
/ 30 августа 2012

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

2 голосов
/ 15 января 2009

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

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

1 голос
/ 15 мая 2009

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

0 голосов
/ 18 октября 2013

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

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

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

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

0 голосов
/ 12 мая 2009

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

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

Мы использовали это как в Windows Services, так и в ASP.NET Web Services, и это работает как чудо.

0 голосов
/ 28 января 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...