部署问题:Oracle + EF4 + Win Server 2008

Posted

技术标签:

【中文标题】部署问题:Oracle + EF4 + Win Server 2008【英文标题】:Deployment Issues: Oracle + EF4 + Win Server 2008 【发布时间】:2011-11-29 08:00:13 【问题描述】:

我有一个 ASP.NET Web 窗体应用程序,我正在 Win7 本地计算机上针对 .NET 4.0 构建和运行该应用程序。 (在本地机器上一切正常。)我的应用正在针对 Oracle DB 运行 EF4.1,因此我使用的是 Oracle EF 数据提供程序,它仍处于测试阶段。

现在,我可以使用本地 VS2010 中的 Web Deploy 将应用程序成功部署到我的 Win2008 Server 目标机器,但是当我在目标机器上运行应用程序时,我得到了经典的 Unable to find the requested .Net Framework Data Provider 错误。

这是我的 (不成功) 设置,截至目前:

32 位应用程序在应用程序池 (.NET 4.0) 中启用 Win2008 服务器目标。

Copy Local 在我的本地 VS2010 解决方案中为 Oracle.DataAccess DLL 设置为 true

Platform Platform target 设置都设置为Any CPU 在我的本地构建配置中。 (我试过了 这里不同的设置都没有成功。)

Win2008 服务器目标没有在其中有一个Oracle.DataAccess DLL GAC。 (我认为在 Oracle DLL 上设置 Copy Local 会 意味着我不需要 GAC。)

编辑:我尝试对Oracle.DataAccess DLL 进行GAC,但遇到了与here 讨论的相同错误。 (我仍然需要对此进行调查。)此外,我的目标机器上已经有另一个 Oracle 客户端,安装 Oracle EF 数据提供程序附带的 Oracle 客户端似乎会干扰它。不能允许这种情况发生。

问题 1:为了能够在 2008 上运行我的应用程序,我需要选择什么构建配置设置(在本地框上)和 IIS 设置(在目标上)的组合服务器?

问题 2:如何在我的目标服务器上不安装另一个 Oracle 客户端的情况下让它工作?

再次感谢您的帮助。

更新:一切正常。有关完整解决方案的链接以及有用信息的链接,请参见下面的答案。

【问题讨论】:

【参考方案1】:

由于您的服务器在 GAC 中没有 Oracle.DataAccess,这表明您尚未在该计算机上安装 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>

【讨论】:

我会仔细检查,但我相信我有一个用于 Oracle 数据提供程序的 machine.config 条目。如果您还没有 GAC 的 Oracle DLL,是否需要此设置? 如果您还没有 GAC'ed DLL,您需要在 web.config 中使用它。 Oracle 设置将把它放在 machine.config 中,然后你不需要它在 web.config 中 那么这可能是整个问题。我没有对 DLL 进行 GAC,并且我有一个 machine.config 条目,但 not 是一个 web.config 条目。非常感谢您的提示。一旦我尝试成功,我会标记你的答案。 看起来我需要的比这里建议的要多,尽管您的部分答案是解决方案的一部分。我会在一切正常后发布完整的解决方案。 如前所述,我通常使用 Oracle 设置将 ODP.Net 提供程序部署到服务器。 Oracle 还提供了一个 xcopy 安装程序。如果您可以使用 Oracle 提供的安装,您可能会为自己节省大量时间和麻烦。【参考方案2】:

GTG 的解决方案至少提供了我问题 1 的部分答案,因此我赞成他的解决方案。对于其他对我的问题 2(如何执行不显眼的 ODAC 安装)感兴趣的人,可以在 here 找到答案。 (寻找 AnthonyVO 的答案,因为它封装了所有必要的信息。)

我应该提到,我还没有能够让不显眼的解决方案为我工作,但很多人都有,这是我需要实施的解决方案。

更新:案件已结案。我缺少一个 Oracle DLL。我的完整设置显示在here。

【讨论】:

以上是关于部署问题:Oracle + EF4 + Win Server 2008的主要内容,如果未能解决你的问题,请参考以下文章

使用 EF 4.1 部署数据库更改

记一次Win Server 2012部署问题及解决方法

记一次win10+oracle11.2安装

win下安装oracle_fdw:从PostgreSQL中访问Oracle数据库

oracle11g部署搭建

64位win7安装了64位的Oracle11g,用delphi7配置BDE出现下面的问题。