У меня есть приложение .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="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.