HOWTO: проект Visual Studio 2010 MVC3 на Win7 x64 с использованием Oracle ODP.NET 11.2 - PullRequest
1 голос
/ 28 сентября 2011

У меня новая машина для разработки Windows 7 x64, и я пишу приложение MVC3, предназначенное для базы данных Oracle. Я перепробовал все, что знаю, чтобы запустить его безуспешно.

Раньше я разрабатывал на Win7 x32 box и мог нормально отлаживать локально, но не смог развернуть и запустить его на Win2008 x64 Server, несмотря на то, что были установлены ODP.Net и 11g Client.

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

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

«Поставщик несовместим с версией клиента Oracle»

Я в полной растерянности.

Есть ли у кого-нибудь аналогичные установки, которые могли бы поделиться подробными инструкциями о том, что устанавливать, где и как ссылаться на Oracle.DataAccess таким образом, чтобы я мог отлаживать в IDE на своем компьютере x64, а также развертывать в x64 сервер?

Это не должно быть так сложно.

Ответы [ 3 ]

2 голосов
/ 28 сентября 2011

У меня это работает на Windows 7x64 с клиентом Oracle 11g R2, который поставляется с установкой ODAC здесь:

http://www.oracle.com/technetwork/topics/dotnet/index-085163.html

Убедитесь, что у вас установлена ​​версия x64 локально,и вам, возможно, придется выполнить танго uninstall-reboot-reinstall-reboot.У меня также были странные проблемы с отображением записей TNSNAMES, и мне пришлось использовать строки EZCONNECT, но это не ваша проблема.

На самом деле, я также заставил его работать на x64, используя 32-битную бета-версию EF, и он отлично работает:

http://www.oracle.com/technetwork/topics/dotnet/downloads/oracleefbeta-302521.html

Хотя я не думаю,Внедрение EF на 100% готово к прайм-тайму (в итоге мы использовали драйвер DevArt вместо этого, потому что он имел более надежную поддержку вычисляемых полей - мы никогда не работали с метками времени Computed или Identity, работающими в бета-версии ODP.NET EF, хотя, как ни странно, с первичным ключом)Поля NUMBER, заполненные триггерами, сработали.)

Мне не нужно было делать ничего особенного, и мне не нужно было делать ничего особенного на стороне сервера (как с 10g, так и с 11gR2).

2 голосов
/ 28 сентября 2011

Так что я наконец понял это.Вот что я сделал шаг за шагом:

  1. На моей машине разработки Win7 x64 Я удалил все продукты Oracle, пытаясь начать с нуля (включая удаление ключей реестра вручную).и файлы / папки)
  2. Я установил "Клиент Oracle Database 11g Release 2 (11.2.0.1.0) для Microsoft Windows (x64)" ON ОБА devмашинный и производственный сервер IIS
    • Я выбрал опцию RUNTIME для установки
    • Во время моей первой попытки при установке возникла жалоба на нехватку места в переменной среды PATH, поэтому пришлось отменить установку, удалитьнекоторые значения пути (которые были заменены после завершения установки
    • , который я установил на C: \ oracle, были моим базовым путем, а client_x64 был моим HOME, поэтому он был установлен на C: \ oracle \ product \ 11.2.0 \ client_x64
  3. Затем я установил "64-битный ODAC 11.2 Release 3 (11.2.0.2.1) для Windows x64" в ОБА разработка и производство машин.

    install.bat odp.net4 c: \ oracle \ odac11.2.x64 odac112x64

    • Приведенный выше оператор создает новый дом с именем odac112x64
  4. На этом этапе я создал простое консольное приложение, используя следующую настройку
    • Добавлена ​​ссылка на Oracle.DataAccess.dll, расположенный в C: \ oracle \ odac11.2.x64 \ odp.net \bin \ 4
    • Установить CopyLocal = FALSE для ссылки Oracle.DataAccess
    • Установить приложение для сборки для "ЛЮБОГО ПРОЦЕССОРА"
    • Приложение подключилось к моей базе данных Oracle и вернулосьзаписей на обеих машинах
  5. Затем я создал пример проекта веб-сайта MVC с тем же кодом подключения, что и консольное приложение.
  6. Когда я запускал его локально вВ среде IDE возникла ошибка:

    "Не удалось загрузить файл или сборку" Oracle.DataAccess, версия = 4.112.2.0, культура = нейтральная, PublicKeyToken = 89b483f429c47342 'или одна из ее зависимостей.Системе не удается найти указанный файл. "

    • Я полагаю, это связано с тем, что IDE является 32-разрядной и не может загрузить 64-разрядную версию Oracle.DataAccess
  7. Я опубликовал этот точный код на рабочем сервере, и он успешно работал
    • На данный момент моя единственная проблема - заставить его работать локально для целей разработки
  8. Я установил «ODAC 11.2 Release 3 (11.2.0.2.1) с Xcopy Deployment», который является x32-версией ODP.NET

    install.bat odp.net4 c: \ oracle \ odac11.2.x32 odac112x32

  9. Когда я перезапустил проект веб-сайта MVC локально, он работал как положено!

ОБНОВЛЕННАЯ СЛЕДУЮЩАЯ ИНФОРМАЦИЯ № 1: После того, как это сработало, я попытался применить те же шаги к другому серверу, и это не удалось. Проблема заключалась в том, что для параметра «Разрешить 32-разрядные приложения» было установлено значение ИСТИНАпул приложений. ОТКЛЮЧЕНИЕ 32-битных приложений (только разрешающих 64-битные) решило проблемуна новом компьютере.

ОБНОВЛЕННАЯ СЛЕДУЮЩАЯ ИНФОРМАЦИЯ № 2: При установке ODAC на новом компьютере не удалось поместить каталог установки и каталог bin в путь среды(Я ненавижу Оракула).Как только это было добавлено, все работало как надо.

0 голосов
/ 28 сентября 2011

Я не работал с ODP.NET в течение достаточно долгого времени, поэтому я запускаю из памяти проблемы, возникшие у меня при последнем использовании.

Биты ODP.NET должны быть установлены на сервере(или, по крайней мере, развернут, хотя я не уверен, как это сделать из рук вон).Фактический клиент в ODP.NET - это те же библиотеки Java, которые используются для доступа к Oracle.Если установлено, то у вас есть какой-то тип ошибки конфигурации или проблема с разрешениями при использовании лежащих в основе библиотек Java.

Однако я не уверен, о чем говорится в сообщении IDE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...