【发布时间】:2011-12-17 07:18:30
【问题描述】:
我有一个使用 beta Oracle EF-aware data provider 运行的 .NET 4.0 Web 窗体应用程序,我想在 Win2K8 机器上执行“不显眼”的 Oracle 部署,如 many SO solutions 所示。
Win2K8 机器上有一个现有的 Oracle Instant Client 安装,我既不能使用也不能删除它,它在 Win2K8 机器的 PATH 环境变量中有一个条目。根据this SO answer,我不需要为我的Oracle DLL 设置PATH,因为我在web.config 中设置了DllPath。
我正在遵循here 的过程,但我仍然收到provider is not compatible with the version of Oracle client 错误。
这是我的 (不成功) 设置,截至目前:
Oracle DLL 位于我的 Web 应用程序的 bin 目录中,并设置为 始终复制 请勿复制。
Platform 和 Platform Target 设置在我的本地构建配置中设置为 x86。
32 位应用程序在 Win2K8 机器上的应用程序池 (.NET 4.0) 中启用。
Oracle DLL 不存在在 GAC 中,它们也不存在于 Win2K8 框上的 GAC_32 和 GAC_64 目录中。
我的 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 的人,我仍然会收到提供程序兼容性错误。
我错过了什么?
再次感谢您的帮助。
更新:Web 应用程序在带有 .NET 4.0、EF4.1 和 Oracle EF Provider 的 Win2K8 目标上运行,完全独立于其他活动的 ODAC 安装。没有 PATH 变量,没有从 Universal Installer 安装,GAC 中没有 Oracle DLL。
【问题讨论】:
标签: iis-7 entity-framework-4.1 windows-server-2008 oracle11g asp.net-4.0