Как указать System.Data.OracleClient использовать 64-битный драйвер Oracle

Я пытаюсь запустить приложение .NET, которое использует System.Data.OracleClient на рабочей станции Win7 x64 . На рабочей станции установлен 32-битный клиент Oracle, что приводит к следующему сообщению об ошибке:

Попытка загрузить клиентские библиотеки Oracle вызвала исключение BadImageFormatException. Эта проблема возникает при работе в 64-битном режиме с установленными 32-битными клиентскими компонентами Oracle.

Итак, это мой долгий путь попыток и неудач:

  1. Я пытался установить клиент Oracle win64_11gR2_client . Но в процессе установки происходит сбой без каких-либо комментариев.
  2. Я следил за ответом из другого потока SO , попытался извлечь Instantclient-basic-windows.x64-11.2.0.2.0 и поместите папку, содержащую двоичные файлы, в переменную PATH Windows. Тем не менее, я все еще получаю то же сообщение об ошибке (даже после перезагрузки).
  3. Я последовал «альтернативному пути» из этого ответа и скопировал файлы oci.dll, orannzsbb11.dll, и oraociei11.dll в папку bin / моего проекта веб-сайта. Все еще то же сообщение об ошибке.
  4. Я попытался скопировать все файлов из мгновенного клиента в этот каталог и попытался снова, но безуспешно.
  5. Я установил ODAC112021Xcopy_x64.zip и поместите папку установки и папку bin в переменную PATH Windows. Безуспешно.
  6. Я возлагал надежду на этот ответ и просмотрел DllPath в реестре (который на самом деле должен иметь отношение к ODP.NET, а не к системе .Data.OracleClient ) и увидел, что DllPath указывает на правильную установку ODAC x64, поэтому, если мое приложение не использовало System.Data.OracleClient , оно должно работать, но поскольку оно
  7. Я искал в Google и stackoverflew, но не нашел ничего, кроме сообщений, на которые я уже ссылался.
  8. Я тщательно обработал этот вопрос SO в надежде получить какой-либо проницательный совет от просвещенного Пользователь SO.
  9. Получив первый ответ от b_levitt, я попытался добавить следующие строки в Global.asax по адресу Application_Start :

     Environment.SetEnvironmentVariable ("ORACLE_HOME", @ "C:  \ OracleProducts \ Odac-11.2.0.2.1-x64 ");
    Environment.SetEnvironmentVariable ("ПУТЬ", @ "C: \ OracleProducts \ Odac-11.2.0.2.1-x64; C: \ OracleProducts \ Odac-11.2.0.2.1-x64 \ bin");
     

    C: \ OracleProducts \ Odac-11.2.0.2.1-x64 - это место, где я установил 64-битную версию ODAC xcopy. И безуспешно.

Кстати, я даже безуспешно пытался принудительно перевести мое .NET-приложение в 32-битный режим , но это совсем другое. Мне нужно перспективное решение, то есть 64-битное.

9
задан Community 23 May 2017 в 02:16
поделиться