У меня есть веб-сайт, который я разработал в Vista с помощью Vb.net9. Он устанавливает связь с Oracle. для подключения я использую System.Data.OracleClient. Он отлично работает на моей машине и нашем тестовом сервере, но не работает на производственном сервере. Мы установили Oracle Client 11 на сервер. Ошибка - System.Data.OracleClient требует клиентского программного обеспечения Oracle версии 8.1.7.
Мы попытались создать консольное приложение, открывающее соединение, соединение работает нормально, открывается, отображает сообщение, и все хорошо там.
Затем мы создаем простую веб-форму, помещаем ее в директорию программы, просто кнопку, открываем соединение, пытаемся .catch, хватает ошибку и ту же ошибку.
Консольное приложение запускалось под администратором, веб-сайтом, работающим под iwam. Возможно ли, что iwam имеет другой путь?
Я столкнулся с этой ошибкой десятки раз:
Причина
Права безопасности были неправильно установлены, когда клиент Oracle был установлен в Windows с помощью NTFS. Результатом этого является то, что содержимое каталога ORACLE_HOME не отображается для аутентифицированных пользователей на компьютере; это вызывает ошибку, в то время как System.Data.OracleClient взаимодействует с программным обеспечением Oracle Connectivity из ASP.NET с использованием прав на аутентификацию пользователя.
Решение
Чтобы устранить проблему, вы должны предоставить привилегию группы Authenticated Users в каталоге Oracle Home.
Повторите попытку.
Автор этой публикации (теперь удаленная запись) предлагает проверить вашу папку C:\Windows\System32
, чтобы убедиться, что существует oci.dll
. Копирование в файл из домашнего каталога Oracle решило эту проблему для меня.
Обновление 1:. У разных пользователей может быть другой путь. Но это не проблема. Существует больше шансов, что пользователь, которому пользователь iwam не имеет разрешения на каталог клиента oracle.
Обновить 0: Предположим, что он работает. Проверьте переменную окружения (это необходимо для поиска клиента oracle и tnsnames.ora). Кроме того, возможно, у вас проблемы с 32/64 бит. Также рассмотрите возможность использования Oracle Data Provider для .NET(поиск для odp.net)
Клиент Oracle версии 11 не может подключаться к базам данных 8i. Вам понадобится клиент в версии 10 максимум.
Для меня проблема была в том, что в моем 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 в будущем.
Почему бы не использовать это: dotConnect для Oracle (ранее известный как OraDirect.NET)?
Он может быть настроен так, чтобы вообще не требовать клиента Oracle.
Мы использовали это как в службах Windows, так и в веб-службах ASP.NET, и это работает как прелесть.
Когда мы впервые перешли на Vista с Oracle 10g, мы столкнулись с этой проблемой, когда мы установили клиент Oracle в наши окна Vista, даже когда мы запускали с правами администратора во время установки.
Oracle выпустила новую версию клиента 10g (10.2.0.3), совместимую с Vista.
Я действительно верю, что это было после выхода 11g, поэтому вполне возможно, что для версии 11g также существует версия с поддержкой Vista.