Вопрос

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

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

Вот мой (безуспешно) Настройка, на данный момент:

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

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

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

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

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

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

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

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

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

Это было полезно?

Решение 2

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

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

ОБНОВИТЬ: Дело закрыто. Мне не хватало Oracle DLL. Моя полная настройка показана здесь.

Другие советы

Поскольку на вашем сервере нет 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top