Nano Hash - криптовалюты, майнинг, программирование

Проблемы с развертыванием: Oracle + EF4 + Win Server 2008

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

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

Вот моя установка (неудачная) на данный момент:

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

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

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

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

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

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

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

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

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


Ответы:


1

Поскольку на вашем сервере нет 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>
29.11.2011
  • Я еще раз проверю, но я считаю, что у меня есть запись machine.config для поставщика данных Oracle. Требуется ли этот параметр, если вы не использовали GAC для Oracle DLL? 29.11.2011
  • Если вы не добавляли DLL-файл в GAC, вам это нужно в файле web.config. Настройка Oracle поместит это в machine.config, а затем он вам не понадобится в web.config 29.11.2011
  • Значит, это может быть всей проблемой. Я не GAC для DLL, и у меня есть запись machine.config, но нет записи web.config. Большое спасибо за этот совет. Я отмечу твой ответ, как только попробую. 29.11.2011
  • Похоже, мне понадобится больше, чем предлагается здесь, хотя часть вашего ответа является частью решения. Я выложу полное решение, когда все заработает. 02.12.2011
  • Как я упоминал ранее, я обычно использую установку Oracle для развертывания поставщика ODP.Net на сервере. Oracle также предоставляет установщик xcopy. Вы, вероятно, сэкономите много времени и сэкономите время, если воспользуетесь установленной Oracle. 04.12.2011
  • Я согласен с тем, что было бы проще просто запустить установщик, но я не всегда могу это сделать при развертывании на собственный сервер клиента. Мне нужно абсолютно ненавязчивое решение. 14.12.2011

  • 2

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

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

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

    15.12.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..