Проблемы развертывания: Oracle + EF4 + Win Server 2008 - PullRequest
3 голосов
/ 29 ноября 2011

У меня есть приложение ASP.NET Web Forms, которое я создаю и использую для .NET 4.0 на локальном компьютере с Win7.(На локальном блоке все в порядке.) Мое приложение работает с EF4.1 для базы данных Oracle, поэтому я использую провайдер данных Oracle EF, который все еще находится в бета-версии.

Сейчас я могу успешно развернутьприложение на моей целевой машине Win2008 Server, используя Web Deploy с моего локального VS2010, но когда я запускаю приложение на целевой машине, я получаю классическую ошибку Unable to find the requested .Net Framework Data Provider.

Вот мой (неудачно) *Настройка 1007 *, на данный момент:

  • Для 32-битных приложений включено в пуле приложений (.NET 4.0) на целевом сервере Win2008.

  • Копировать локальный установлен в true для Oracle.DataAccess DLL в моем локальном решении VS2010.

  • Обе платформы и Целевые значения платформы установлены на Любой ЦП в моей локальной конфигурации сборки.(Я пробовал разные настройки здесь безуспешно.)

  • Цель сервера Win2008 действительно не имеет Oracle.DataAccess DLL в GAC.(Я думал, что установка Copy Local в Oracle DLL будет означать, что мне не нужен GAC.)

EDIT : Я пытался GAC Oracle.DataAccess DLL, но я получаю ту же ошибку, которая обсуждается здесь .(Я все еще должен исследовать это.) Кроме того, на моем целевом компьютере уже есть другой клиент Oracle, и установка клиента Oracle, поставляемого с поставщиком данных Oracle EF, кажется, мешает ему.Этого нельзя допустить.

Вопрос 1 : Какую комбинацию параметров конфигурации сборки (в локальном окне) и параметров IIS (в цели) мне нужно выбрать, чтобыбыть в состоянии запустить мое приложение на сервере 2008?

Вопрос 2 : Как я могу заставить это работать без установки другого клиента Oracle на моем целевом сервере?

Еще раз спасибо за помощь.

Обновление: все работает .Смотрите мой ответ ниже для ссылки на полное решение, а также ссылки на полезную информацию.

Ответы [ 2 ]

2 голосов
/ 29 ноября 2011

Поскольку на вашем сервере нет Oracle.DataAccess в GAC, это указывает на то, что вы не установили клиент Oracle на этот компьютер и пытаетесь заставить его работать, развертывая Oracle.DataAccess.dll как часть вашего приложения..

Я не совсем уверен, что именно нужно установить на сервере.Обычно я просто запускаю установку Oracle на сервере, чтобы убедиться, что все необходимые файлы и настройки Oracle установлены.Если вы сделаете это, вам не нужно развертывать Oracle.DataAccess.dll вместе с вашим приложением, оно уже будет находиться в GAC сервера.

Одна вещь, которую я знаю, необходима, это параметр конфигурации, который сообщаетсистема как создать новый экземпляр провайдера.Вы можете попытаться добавить этот параметр в ваш файл web.config и попробовать, если этого достаточно, но, опять же, может быть много зависимых библиотек DLL и настроек, необходимых для работы поставщика Oracle.

Параметр(это для другой версии ODP.Net, вы найдете правильные настройки в machine.config на своей машине):

<system.data>
  <DbProviderFactories>
     <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client"
          description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.1.2, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
1 голос
/ 15 декабря 2011

Решение GTG дает хотя бы часть ответа на мой вопрос 1, поэтому я голосую против его решения. Для всех, кто интересуется моим Вопросом 2 (как выполнить ненавязчивую установку ODAC), можно найти ответ здесь . (Ищите ответ AnthonyVO, поскольку он содержит всю необходимую информацию.)

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

ОБНОВЛЕНИЕ: Дело закрыто. Я скучал по Oracle DLL. Моя полная настройка показана здесь .

...