2013-09-13 9 views
17

Я пытаюсь запустить это веб-приложение. Я продолжаю получать эту ошибку. «Не удалось загрузить файл или сборку« Oracle.DataAccess »или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом». Сведения об исключении: System.BadImageFormatException. «Не удалось загрузить файл или сборку« Oracle.DataAccess »или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом». Ниже перечислены вещи, которые я уже пробовал.Не удалось загрузить файл или сборку «Oracle.DataAccess» или одну из его зависимостей

1) заменены все DLL Oracle, с 32-битной длл оракула т.е. 2.112.3.0

Я установил 32-битный клиент на 64-битной машине. Операционная система - это окна 7.

2) индивидуально составляйте каждый отдельный проект. Удаляется всему оракул зависимую DLL файлов, а затем добавили в 2.112.3.0 DLL файлов по отдельности, а затем скомпилирована каждый проект

3) Регистрация 32-битный DLL на GAC, используя эту инструкцию gacutil/я% ORA_HOME4% \ odp.net \ Bin \ 4 \ Oracle.DataAccess.dll

gacutil/я% ORA_HOME4% \ asp.net \ Bin \ 4 \ oracle.web.dll

для вышеупомянутых двух утверждений, я скопировал Gacutil.exe из с : \ Program Files (x86) \ Microsoft sdk \ windows \ v7.0A \ Bin \ NETFX4.0 Инструменты \ X64 в C: \ привод, а затем

I exe вырезан вышеупомянутую два заявления:

gacutil/I% ORA_HOME4% \ odp.net \ Bin \ 4 \ Oracle.DataAccess.dll gacutil/я% ORA_HOME4% \ asp.net \ Bin \ 4 \ oracle.web. dll , когда я выполнил вышеупомянутые два утверждения, я не получил никакого сообщения, я выполнил их в окнах Dos под правами администратора.

4) Я также удалил все временные файлы ASP.net от этого места

C: \ Windows \ Microsoft.Net \ V4.0.30319 \ временные файлы ASP.net Я также изменил приложения сборки платформы веб target to X86, Первоначально это было в «ANy CPU». из-за разочарования я также попытался изменить платформу на X64, а затем получил сообщение об ошибке

«Холодный файл не загружать или собирать webapp» или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом.

У меня нет IIS, установленного на моем компьютере, я запускаю это приложение в visual studio 2010, поэтому я думаю, что он будет использовать встроенный IIS, который поставляется с визуальной студией.

Я трачу много часов на решение этой проблемы, но все равно получаю ту же ошибку снова и снова.

любая помощь или подсказка будут высоко оценены.

ответ

1

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

При перечислении сборок на моей новой машине я закончил со следующим списком

C:\oracle\product\11.2.0\X64\odp.net\bin\4>gacutil /l|findstr Oracle.DataAccess 
    Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64 
    Policy.2.102.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64 
    Policy.2.111.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64 
    Policy.2.112.Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64 
    Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64 
    Policy.4.112.Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=AMD64 

только 64-разрядные библиотеки DLL, чтобы увидеть здесь.

enter image description here

Я не мог видеть его из web.config, но один я использовал был 32bit версия.

При проверке моей старой машины с помощью GACutil я видел больше DLL, а также X86.

Fixed путем повторного процесс регистрации (как x32/x64 версия ссылки здесь)

OraProvCfg.exe /action:gac /providerpath:C:\oracle\product\11.2.0\x32\ODP.NET\bin\4\Oracle.DataAccess.dll 

OraProvCfg.exe /action:gac /providerpath:C:\oracle\product\11.2.0\x64\ODP.NET\bin\4\Oracle.DataAccess.dll 

после того, Visual Studio был счастливым кроликом и снова скомпилирован для меня все.

26

Попробуйте это: Откройте диспетчер IIS, измените настройку пула приложений, измените Включить 32-разрядное приложение на false.

+5

мой по умолчанию был ложным, и когда я установил его в true, проблема с зависимостью исчезла. – bygrace

+0

Мне нужно 32 бит, поэтому я установил для меня True, переработал пул приложений, и это сработало для меня. – Caverman

+0

Мне нужно было остановить/запустить мое приложение. – learnerplates

19

Я нашел решение со следующими шагами:

  • удалить Oracle.DataAcces.dll ссылку,
    и добавить свежую ссылку на:
    C:\windows\assembly\GAC\Oracle.DataAccess\X.XXX.X.XX__89b483f429c47342/oracle.dataaccess.dll
  • сделать локальную копию = ложь.

Надеется, что это помогает

+0

У меня нет папки Oracle.DataAccess в папке GAC (но в GAC32 и GAC64). – taktak004

+0

Я тоже. Я использую win 8.1 и нет папки GAC в C: \ windows \ assembly –

+0

работал на me.thanks. –

0

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

Тогда, чтобы решить проблему «Не удалось загрузить файл или сборку„Oracle.DataAccess“»:

  • В локальном компьютере и сервер установлен Oracle v11, 64 Bit.
  • Во всех локальных Dev PC я ссылаюсь на 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 только instaled MVC версии 3.0.0.0. Таким образом, исправление было локально работать с MVC 3.0.0.0, а не 3.0.0.1 и публиковать снова на сервере, и оно работает.
+0

у вас может быть хороший совет, но я не могу понять, что вы пытаетесь сказать, особенно в последнем пункте –

2

В моем случае следующим решить эту проблему:

  1. загрузив "32-разрядные Oracle компонентов доступа к данным (ODAC) с Oracle Developer Tools для Visual Studio" из http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html
  2. Затем добавляя ссылка oracle.dataaccess.dll на файл bin, просмотрев местоположение файла или только из списка подтверждения в таблице .NET.
+1

, который работает со мной тоже для той же проблемы – sam

4

Возможно, вам потребуется включить 32-битные приложения в AppPool. Перейдите в «Пул приложений» в IIS => щелкните правой кнопкой мыши ваш пул приложений => параметр предварительной настройки => «включить 32-разрядное приложение» в true.

Пожалуйста, не забудьте перезапустить пул приложений и соответствующее приложение, указывающее на этот пул приложений.

0

Для меня все остальное было почти нормально, но как-то изменились настройки моего проекта & iisExpress стал использоваться вместо IISLocal. Когда я изменил &, указав на виртуальный каталог (в IISLocal), он снова смотрел отлично.

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

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