Reddy Prakash Ответов: 8

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


Всем Привет,

Я установил веб-приложение на IIS 7.0 windows server 2008 R2 64-разрядной ОС
Я имею в виду оракула.DataAccess.dll
Когда я пытаюсь получить доступ к приложению, я получаю следующее сообщение
"Не удалось загрузить файл или сборку 'Oracle.DataAccess' или одна из его зависимостей. Была предпринята попытка загрузить программу с неверным форматом.".

Пожалуйста, помогите мне.

заранее спасибо.

8 Ответов

Рейтинг:
66

Dylan Morley

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

напр.

http://www.alexjamesbrown.com/development/could-not-load-file-or-assembly-chilkatdotnet2-or-one-of-its-dependencies-an-attempt-was-made-to-load-a-program-with-an-incorrect-format/[^]


Рейтинг:
59

katrash

Похоже, что процесс установки компонента Oracle Data Access Component с использованием версии "11.2 Release 3 (11.2.0.2.1) with 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 для него.

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

катраш


[no name]

Сначала это не сработало, но потом я просто "бомбардировал" GAC всеми версиями этих dll, которые мог найти на своем компьютере. Большое вам спасибо за этот намек! Это убивало меня! Проблемы возникли, когда я попытался установить, а затем деинсталлировать некоторые компоненты Oracle и решил немного "очистить вещи" в этом процессе.

Рейтинг:
48

Javed Boqo

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


Thando Khumalo

Эй
Я использую 64-битную версию, но получаю одно и то же сообщение об ошибке

Рейтинг:
2

Member 10224896

На IIS обратиться к истинным предварительной настройки
Включено 32-битное приложение = true


Рейтинг:
1

lw@zi

Тут могут быть две вещи. Либо вы не поместили библиотеку DLL ODP в папку веб-сайта, либо она 32-битная на 64-битном компьютере, либо наоборот. Пожалуйста, проверьте это.


Рейтинг:
1

Daniel R. Przybylski

Я переключился на управляемый ODP.NET ассамблеи. Мне также пришлось очистить все файлы из приложений IIS, которые использовали старые сборки.

http://www.oracle.com/technetwork/issue-archive/2014/14-mar/o24odp-2147205.html


Рейтинг:
1

hernaldo.gonzalez

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

Затем для решения проблемы "не удалось загрузить файл или сборку" Oracle.Доступа к данным'":

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


Рейтинг:
0

Nutan R

c# - Oracle.Доступа к данным.Клиентские Зависимости - Переполнение Стека[^]

Лучше всего найти то, что лучше всего нужно.


Kats2512

вопрос, который был задан и на который был дан ответ 7 лет назад...