Подтвердить что ты не робот

Не удалось загрузить файл или сборку "Oracle.DataAccess" или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом

Я установил веб-приложение на IIS 7.0 Windows Server 2008 R2 64bit. Я имею в виду oracle.DataAccess.dll; Когда я пытаюсь получить доступ к приложению, я получаю следующее сообщение: "Не удалось загрузить файл или сборку" Oracle.DataAccess "или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом". Кто-нибудь может мне помочь, пожалуйста?

4b9b3361

Ответ 1

Кажется, что процесс установки компонента Oracle Data Access Component с использованием версии 11.2 Release 3 (11.2.0.2.1) с Xcopy Deployment "нарушен. Чтобы исправить это, вы должны зарегистрировать недостающие сборки в GAC. Чтобы сделать это для этой конкретной версии, запустите эти команды из консоли администратора:

md C:\Windows\assembly\GAC_32\Oracle.DataAccess\4.112.2.0__89b483f429c47342\

copy %ORACLE_HOME%\odp.net\bin\4\Oracle.DataAccess.dll C:\Windows\assembly\GAC_32\Oracle.DataAccess\4.112.2.0__89b483f429c47342\

md C:\Windows\assembly\GAC_32\Oracle.Web\4.112.2.0__89b483f429c47342\

copy %ORACLE_HOME%\asp.net\bin\4\oracle.web.dll C:\Windows\assembly\GAC_32\Oracle.Web\4.112.2.0__89b483f429c47342\

Обратите внимание, что это регистрирует только ресурсы DLL, но не другие языки. Итак, если вы используете какой-либо другой язык, чем английский (de, es, fr, it, ja, ko, pt-BR, zh-CHS и zh-CHT), вам также необходимо зарегистрировать их, используя соответствующий ресурс файл.

Если на компьютере установлена ​​Visual Studio, вы можете вместо этого выполнить следующие команды:

gacutil /i %ORACLE_HOME%\odp.net\bin\4\Oracle.DataAccess.dll
gacutil /i %ORACLE_HOME%\asp.net\bin\4\oracle.web.dll

Примечание. Найдите файл gacutil.exe в папке установки Visual Studio.

Надеюсь, что это поможет.

P.S. Или вы можете попробовать this.

Ответ 4

Вам необходимо зарегистрировать эту DLL на реальном сервере с помощью утилиты GAC. Также проверьте, присутствует ли его в папке bin или нет. Некоторое время отсутствует DLL в каталоге bin приводит к той же ошибке

Ответ 5

В моем случае я использую VS 2010, Oracle v11 64 бит. Я могу опубликовать в 64-битном режиме (установка в режиме "Любой процессор" в конфигурации веб-проекта), и я могу настроить IIS на сервере Production на 32-битную компиляцию на false (потому что сервер 64 бит, и мне нравится использовать его).

Затем для решения проблемы "Не удалось загрузить файл или сборку" Oracle.DataAccess "(иногда появляется сообщение об ошибке" Сообщение компилятора: CS1705: Сборка "):

  • На локальном компьютере и сервере установлен Oracle v11, 64 бит.
  • Во всех локальных Dev-компьютерах я ссылаюсь на Oracle.DataAccess.dll(C:\app\user\product\11.2.0\client_1\odp.net\bin\4), который является 64-битным.
  • В IIS Production Server я установил 32-разрядную совместимость в False.
  • Ссылка в веб-проекте на System.Web.Mvc.dll была версией v3.0.0.1 на локальном ПК, однако только в Production установленная версия MVC 3.0.0.0. Итак, исправление было локально работать с MVC 3.0.0.0, а не 3.0.0.1 и снова опубликовать на сервере, и он работает.

Ответ 6

Установка 64-разрядного ODAC 11.2 Release 3 (11.2.0.2.1) Xcopy для Windows x64 из:

http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html

Исправлено это для меня. Обязательно обновите свой системный путь в соответствии с шагом # 4 в файле readme.

Ответ 7

Принятый ответ, опубликованный Джорджем Нету, помог решить мою проблему, но мне пришлось возиться с некоторыми дополнительными пустяками:

Описание проблемы:

В разделе C:\Windows\assembly я обнаружил два элемента Oracle.DataAccess(GAC-папки?). Relict, вызванный несколькими установками клиента Oracle. Один элемент показал версию 2.112.1.0, но был на самом деле версия 2.121.2.0 (видимая через Properties- > Version). Эта несогласованность была ошибкой.

Первые бесполезные попытки:

  • попытался удалить и переустановить полный клиент Oracle, как в версиях Runtime/Administrator
  • попытался перераспределить правильные .dlls
  • попытался скопировать новые установленные сборки в серверные времена GAC, как указано в принятом ответе выше с помощью командной строки (но это не решило несоответствие версии..)
  • попытался использовать gacutil /i ...

Конечный успех:

Я приземлился на странице Gacutil.exe msdn и в конечном итоге смог удалить элементы из папки сборки C:\Windows \.

gacutil /u Oracle.DataAccess, Version=2.112.1.0, Culture="Neutral",PublicKeyToken=45e343aae32233ca
gacutil /u Oracle.DataAccess, Version=2.212.2.0, Culture="Neutral",PublicKeyToken=45e343aae3223abc
gacutil /u Oracle.Web, Version=2.112.1.0, Culture="Neutral",PublicKeyToken=45e343aae3223def

После этого я повторил две команды gacutil /i ..., и две DLL появились там в согласованных версиях.

Наконец перезапустил IIS, и он работает.