Как заставить ODP.NET 4.0 (64 бит) работать на 64 битной машине Windows 7? - PullRequest
2 голосов
/ 08 июня 2011

Я установил клиент Oracle для 64-битной машины, используя XCopy 11.2, предоставленный Oracle (все установлено в соответствии с инструкциями для чтения).

Я использую Visual Studio 2010 и проект имеет тип ASP.NET Website.

Когда я пытался запустить свой веб-сайт ASP.NET с использованием Oracle Connection, установленного выше ... он выдает ошибку из файла web.config во время компиляции.

**

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

**

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

Но мое требование - заставить его работать на 64-битной машине с 64-битным разъемом ODP.NET, поэтому я не хочу менять значение параметра Включить 32-битные приложения на True.

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

Ответы [ 2 ]

4 голосов
/ 08 июня 2011

Лучшая возможность справиться с этим - использовать версию x86 локально с Visual Studio и версию x64 на сервере с IIS.Для этого вам нужно скачать обе версии - скопировать одну в папку lib \ x86, а другую в lib \ x64. После этого вам нужно изменить файл (ы) проекта - Visual Studio поддерживает условные ссылки.Добавьте следующий раздел в ваш файл проекта:

<PropertyGroup>
     <ReferencesPath Condition=" '$(Platform)' == 'x86' ">..\Lib\x86</ReferencesPath>
     <ReferencesPath Condition=" '$(Platform)' == 'x64' ">..\Lib\x64</ReferencesPath>
</PropertyGroup>

После этой ссылки odp.net может выглядеть примерно так:

<Reference ... processorArchitecture=$(Platform)">
   <SpecificVersion>False</SpecificVersion>
   <HintPath>$(ReferencesPath)\Oracle.DataAccess.dll</HintPath>
   <Private>True</Private>
</Reference>

Таким образом, когда вы можете локально собрать как x86 и на сервереx64 и всегда будет указываться правильная версия Oracle.DataAccess.dll.

В качестве альтернативы, если вы хотите использовать только версию x64, чем придерживаться IIS, даже если вы работаете локально ИЛИ вы можете попытаться запуститьверсия Cassini с открытым исходным кодом в режиме x64 (http://cassinidev.codeplex.com).

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

1 голос
/ 18 июля 2013

Необходимо установить 64-битные компоненты доступа к данным Oracle (ODAC) , поскольку при установке клиента Oracle не регистрируется Oracle.DataAccess.dll в сборке.

Если установка доступа к данным oracle в порядке, все должно работать после снятия флажка «Включить 32-битные приложения» в настройках пула приложений.

Если у вас все еще есть та же ошибка, возможно, у вас есть 32-битная библиотека в папке bin на веб-сайте. Просто удалите его, и веб-сайт будет использовать 64-битную сборку, и она должна работать.

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