Ненавязчивое развертывание Oracle на Windows Server 2008 - PullRequest
2 голосов
/ 17 декабря 2011

У меня есть приложение .NET 4.0 Web Forms, которое я запускаю с бета-провайдером данных, поддерживающим Oracle EF , и я хочу выполнить «ненавязчивое» развертывание Oracle в окне Win2K8, как показано в многие SO решения .

Существует установленная программа Oracle Instant Client на блоке Win2K8, с которой я не могу ни работать, ни удалять, и она имеет запись в переменной среды PATH на блоке Win2K8. Согласно этому SO-ответу , мне не нужно устанавливать PATH для своих библиотек Oracle, поскольку в файле web.config установлен DllPath.

Я следую процедуре из здесь , но я все еще получаю ошибку provider is not compatible with the version of Oracle client.

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

DLL-библиотеки Oracle находятся в каталоге bin моего веб-приложения и имеют значение Копировать всегда Не копировать .

Платформа и Платформа Цель Установки установлены на x86 в моей локальной конфигурации сборки.

32-разрядные приложения включены в пуле приложений (.NET 4.0) на коробке Win2K8.

DLL-библиотеки Oracle отсутствуют в GAC и не присутствуют в каталогах GAC_32 и GAC_64 на коробке Win2K8.

Мой web.config (но не мой Win2K8 machine.config) содержит это:

<configuration>

    <configSections>
        <section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </configSections>

    <oracle.dataaccess.client>
        <settings>
            <add name="DllPath" value="C:\inetpub\wwwroot\myapp\bin"></add>
            <add name="FetchSize" value="65536"></add>
            <add name="StatementCacheSize" value="10"></add>
            <add name="TraceFileName" value="c:\temp\odpnet2.log"></add>
            <add name="TraceLevel" value="0"></add>
            <add name="TraceOption" value="0"></add>
        </settings>
    </oracle.dataaccess.client>

    <system.data>
        <!-- Version=4.112.2.50 -->
        <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.2.50, Culture=neutral, PublicKeyToken=89b483f429c47342" />
        </DbProviderFactories>
    </system.data>

    <connectionStrings>
        <add name="MyEntities" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=**<using EZCONNECT format here>**" providerName="System.Data.EntityClient" />
    </connectionStrings>

<configuration>

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

Чего мне не хватает?

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

ОБНОВЛЕНИЕ : веб-приложение работает на цели Win2K8 с .NET 4.0, EF4.1 и провайдером Oracle EF, полностью отделенными от другой активной установки ODAC. Без переменной PATH, без установки из Universal Installer, без Oracle DLL в GAC.

1 Ответ

1 голос
/ 19 декабря 2011

Дело закрыто. Мне не хватало Oracle DLL.

...