2017-02-10 18 views
0

У меня проблема с сервисом, который у нас есть.Ошибка с Oracle.DataAccess

Я имел эту ошибку:

System.IO.FileNotFoundException : Could not load file or assembly 'Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=X' or one of its dependencies.' 

Так что я догадывался, я бы добавить DLL в папку бин моего проекта, ничего особенного, не так ли?

Тогда у меня была эта ошибка:

Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format. 

Хорошо, я видел это раньше, просто пойти в пул приложений и установите «Включить 32-разрядные приложения» истина .... Правильно?

OpenDBConnection: Error occurred. System.TypeInitializationException: 
The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. 
---> Oracle.DataAccess.Client.OracleException: The provider is not compatible with the version of Oracle client 

Okayyy ... Нет проблем, позвольте мне проверить: сервер является корпоративным предприятием 2008 R2 x64. Затем я буду компилировать x64.

Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format. 

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

У меня установлены Oracle 1120_32 и 1120_64 (это версия 11.2.0.2.0), .Net 4.0. Я пробовал компилировать «любой процессор». Я пробовал установить свойства dll в «Специфическая версия = ложь», «Копировать локально = истина», а также наоборот. Я попытался получить старые версии программы и перекомпилировать их после внесения необходимых изменений в код, сохраняя старую конфигурацию. Я пробовал танцевать вокруг кактуса, поющего «Пожалуйста, Биг Билл, Пусть эта DLL будет загружена».

Я проверил множество ссылок, но это происходит в удаленной среде, поэтому у меня нет возможности установить точку останова или что-то другое, чтобы увидеть WHICH-dll, которую программа пытается загрузить, и большинство ссылок советуют (re) установите клиент oracle на сервере, но, поскольку я должен был бы попросить администратора для этого, я предпочел бы подтверждение, что больше ничего не попробовать.

Не могли бы вы помочь?

+0

Как вы установили 32-битный и 64-разрядный клиент Oracle? Взгляните на эту инструкцию: http://stackoverflow.com/questions/24104210/badimageformatexception-this-will-occur-when-running-in-64-bit-mode-with-the-32#24120100, соотв. http://stackoverflow.com/questions/659341/the-provider-is-not-compatible-with-the-version-of-oracle-client#25412992 –

+0

@WernfriedDomscheit хорошо Я не администратор сервера, поэтому я сделал не устанавливайте ничего :) Как сказано в сообщении, я уже видел сообщения о том, что переустановка «может» сделать трюк, но я надеюсь на что-то еще ... – DoctorPrisme

+0

Звучит странно, но у меня было что-то похожее назад VS2013 Я верю. Исправление заключалось в том, чтобы удалить (удалить) ссылку в VS, а затем добавить ее обратно (32-бит odac). – tbone

ответ

0

Если пул приложений имеет 32-разрядную версию, то клиент oracle и приложение также должны быть 32-битными.

Я думаю, что управляемый ОДАК был бы менее болезненным.

Если вы хотите пойти 64-бит, убедиться, что все 64 бит (приложение, приложение бассейн и ODAC)

Кроме того, Windows Sysinternals Process Monitor может быть полезно для определения того, какие неуправляемым DLL загружаются по Oracle.DataAccess.dll, используемый вашим приложением.

+0

Я не знаю, что вы подразумеваете под управлением управляемого ODAC. У меня есть клиент oracle 32 и клиент oracle 64, мой вопрос действительно «как заставить программу загрузите эту конкретную dll ", поскольку она пытается использовать старую. Спасибо – DoctorPrisme

+0

Управляемый odac - это другая загрузка, см. [link] (http://www.oracle.com/technetwork/database/windows/ downloads/utilsoft-087491.html), ему не нужны все неуправляемые клиентские dll. Неограниченный odac использует ключи реестра и пути к среде и vars, чтобы определить, какой клиент использовать. –

+0

BadImageFormatException: Не удалось загрузить файл или сборку 'NameOfYourAppHere 'или одна из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом. Это означает, что существует несоответствие битов между пулом приложений и приложением или приложением и Oracle.DataAccess.dll. IF App Pool включил 32-битные приложения, тогда приложение скомпилировано в x64 или oracle.dataaccess.dll - x64. или если App Pool не включил 32-битные приложения, то App, скомпилированные в x86 или oracle.dataaccess.dll, является x86 (пул приложений не поддерживает x86) –

 Смежные вопросы

  • Нет связанных вопросов^_^