2011-12-16 2 views
4

Когда я просматриваю приложение ASP.Net, разработанное в Visual Studio 2008 на IIS 7.5 (Windows Server 2008 R2 x64), я получаю ошибку конфигурации, заявляя, что Oracle.DataAccess, версия = 2.111 .7.20 невозможно. Я уже установил Oracle Data Provider для .NET, который содержит файл. Когда я устанавливаю ODP.net, он помещает файлы dll в папку c: \ app .... \ odp.net \ PublisherPolicy. Я на всякий случай скопировал эти файлы в папку C: \ Windows \ Microsoft \ Framework, но все же я получил ту же ошибку. Может ли кто-нибудь помочь мне решить эту проблему? Любая помощь с благодарностьюOracle.DataAccess.dll не может быть найден, хотя он существует

+1

Вы подтвердили, что установленная версия 2.111.7.20? –

ответ

11

Установка ODP.NET может быть очень сложной. Есть много вещей, которые могут пойти не так:

  • У вас может быть несоответствие версии (2.111.7.20 по сравнению с 2.112.1.0 по сравнению с 2.112.2.0).
  • У вас может быть несоответствие между 32 и 64 бит.
  • .NET DLL может существовать, но одна из зависимостей не найдена.

Попробуйте сначала проверить несоответствие 32/64 бит. В IIS вы можете настроить, будет ли ваше веб-приложение работать как 32 или 64 бит. Чтобы проверить это, взгляните на диспетчер задач и посмотрите, имеет ли процесс w3wp.exe знак *32. Затем перейдите к C:\Windows\Assembly в файл-проводник. Это специальный вид, отображающий GAC. Если он говорит x86 в последнем столбце строки Oracle.DataAccess, то это 32 бит. Если он говорит AMD64, то это 64 бит.

В том же ряду вы также найдете точный номер версии. Проверьте в VisualStudio, использует ли проект ASP.NET тот же самый.

Если я не ошибаюсь, основная зависимость Oracle.DataAccess.dll - OraOps11w.dll, которая должна быть доступна в каталоге BIN каталога клиентов Oracle. Этот каталог обычно находится через реестр (HKLM\SOFTWARE\ORACLE\ODP.NET\<version>\DllPath). Убедитесь, что вы смотрите на реестр правильной битности (32 против 64 бит).

Есть больше вещей, которые могут пойти. Но они здесь обычно решают проблему.

+0

Очень, очень глубокий и правильный, а также полезное объяснение. Огромное спасибо. Вы абсолютно правы в вопросе бит. Сам сервер - x64, но все, что работает на панели задач, помечено * 32. Хотелось бы, чтобы я был модератором, чтобы быть в состоянии поддержать вас на 100 очков. –

+0

Что вы делаете, когда есть несоответствие 32/64? –

+0

@FedorSteeman Если ваш сервер занимает 64 бит, а ваше приложение - 32 бит, вы можете включить 32 приложения в дополнительных настройках пула приложений в IIS. В противном случае получим dll с соответствующей битностью. – Travis

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